• 数据可视化-ECharts Html项目实战(2)


     在之前的文章中,我们学习了如何创建简单的折线图,条形图,柱形图并实现动态触发,最大最小平均值。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。

    数据可视化-ECharts Html项目实战(1)-CSDN博客文章浏览阅读858次,点赞32次,收藏23次。在之前的文章中,我们学习了如何安装Visual Studio Code并下载插件,想了解的朋友可以查看这篇文章。安装 Visual Studio Code今天的文章,我会从基础案例开始,带着大家在VS code中绘制ECharts里的折线图、条形图与柱形图,并实现动态触发以及最大、最小、平均值。https://blog.csdn.net/qq_49513817/article/details/136665547?spm=1001.2014.3001.5501

     今天的文章,我会从上一篇结尾的案例开始,带着大家在VS code中绘制ECharts里的堆积折线图、瀑布图、饼图。并实现图表标题的设置。

    目录

    一、知识回顾

    二、项目实战

    1.堆积折线图

    2.瀑布图

    3.饼图

    三、标题设置

    拓展-标题设置常用属性


    一、知识回顾

     在上一篇文章中,我们学习了如何创建一个基本的图表,也学习了一些基本的图表类型。

    更改图表类型的方法,学习能力强的朋友,应该已经知道了。

     就是更改这个type,中文意思就是“类型”,很好理解。

    常见的图表类型也告诉大家了,那么我想,今天的学习任务对于大家应该都很简单吧!

    在后面的动态触发和最大值,最小值,平均值中的代码我用到了几个陌生的东西。

    一个是toolbox,一个是tooltip,分别是提示框组件和工具箱,在后面的文章中我会告诉大家它的用法,大家现在只用知道它是什么,它的作用就行。

    现在,开始今天的学习吧。

    二、项目实战

    1.堆积折线图

    想要实现堆积折线图其实并不复杂,只需要两句简单的代码,但是有很多人不会用,它的关键在于放的位置。

    1. stack:"all",
    2. //stack 属性通常用于堆叠多个系列的数据。当设置为 "all" 时,意味着图表上的所有系列都将被堆叠在一起。
    3. areaStyle:{}
    4. //areaStyle 属性用于定义区域填充的样式。当这个属性为空对象 {} 时,//它通常意味着默认样式将被应用。但是,你可以在这个对象中添加各种属性来定制区域的填充颜色、透明度、边框等。

    现在,我们把它放到代码里试试

    可以看到,我们想要的堆积效果出现了。

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <script src="js/echarts.js">script>
    6. head>
    7. <body>
    8. <div id="main" style="width: 800px; height: 400px">div>
    9. <script type="text/javascript">
    10. var myChart = echarts.init(document.getElementById("main"));
    11. var option = {
    12. title: {
    13. text: '红红成绩表',
    14. subtext: '成绩来源于辅导员',
    15. },
    16. tooltip: {
    17. trigger: 'axis',
    18. },
    19. legend: {
    20. data: ['2023年', '2024年'],
    21. },
    22. toolbox: {
    23. show: true,
    24. feature: {
    25. mark: { show: true },
    26. dataView: { show: true, readOnly: false },
    27. magicType: { show: true, type: ['line', 'bar'] },
    28. restore: { show: true },
    29. saveAsImage: { show: true },
    30. },
    31. },
    32. calculable: true,
    33. xAxis: [
    34. {
    35. type: 'category',
    36. data:['2月','4月','6月','9月','11月','1月']
    37. },
    38. ],
    39. yAxis: [
    40. {
    41. type: 'value',
    42. data: ['红红'],
    43. },
    44. ],
    45. series: [
    46. {
    47. name: '2023年',
    48. type: 'line',
    49. data: [65,75,66,80,90,73],
    50. stack:"all",
    51. areaStyle:{}
    52. },
    53. {
    54. name: '2024年',
    55. type: 'line',
    56. data: [65,88,75,40,60,72],
    57. stack:"all",
    58. areaStyle:{}
    59. },
    60. ],
    61. };
    62. //使用刚指定的配置项和数据显示图表
    63. myChart.setOption(option);
    64. script>
    65. body>
    66. html>

    现在,我们把昨天学的最大最小平均值加进去试试。

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <script src="js/echarts.js">script>
    6. head>
    7. <body>
    8. <div id="main" style="width: 800px; height: 400px">div>
    9. <script type="text/javascript">
    10. var myChart = echarts.init(document.getElementById("main"));
    11. var option = {
    12. title: {
    13. text: '红红成绩表',
    14. subtext: '成绩来源于辅导员',
    15. },
    16. tooltip: {
    17. trigger: 'axis',
    18. },
    19. legend: {
    20. data: ['2023年', '2024年'],
    21. },
    22. toolbox: {
    23. show: true,
    24. feature: {
    25. mark: { show: true },
    26. dataView: { show: true, readOnly: false },
    27. magicType: { show: true, type: ['line', 'bar'] },
    28. restore: { show: true },
    29. saveAsImage: { show: true },
    30. },
    31. },
    32. calculable: true,
    33. xAxis: [
    34. {
    35. type: 'category',
    36. data:['2月','4月','6月','9月','11月','1月']
    37. },
    38. ],
    39. yAxis: [
    40. {
    41. type: 'value',
    42. data: ['红红'],
    43. },
    44. ],
    45. series: [
    46. {
    47. name: '2023年',
    48. type: 'line',
    49. data: [65,75,66,80,90,73],
    50. stack:"all",
    51. areaStyle:{},
    52. markPoint: { // 标记点
    53. data: [
    54. {
    55. type: 'max', name: '最大值'
    56. },{
    57. type: 'min', name: '最小值'
    58. }
    59. ]
    60. },
    61. markLine: { // 标记线
    62. data: [
    63. {
    64. type: 'average', name: '平均值'
    65. }
    66. ]
    67. },
    68. },
    69. {
    70. name: '2024年',
    71. type: 'line',
    72. data: [65,88,75,40,60,72],
    73. stack:"all",
    74. areaStyle:{},
    75. markPoint: { // 标记点
    76. data: [
    77. {
    78. type: 'max', name: '最大值'
    79. },{
    80. type: 'min', name: '最小值'
    81. }
    82. ]
    83. },
    84. markLine: { // 标记线
    85. data: [
    86. {
    87. type: 'average', name: '平均值'
    88. }
    89. ]
    90. },
    91. },
    92. ],
    93. };
    94. //使用刚指定的配置项和数据显示图表
    95. myChart.setOption(option);
    96. script>
    97. body>
    98. html>

    可以看到,最大值都超过我们需要的100了,这是因为堆积折线图数据会堆积起来,设平均值并不是一个很好的选择。

    2.瀑布图

     在这里,就有一些难度了,在 ECharts 中,并没有瀑布图这种类型,需要我们运用一些技巧,达到这种效果。使用serise中的type:"bar"条形图)来模拟瀑布图。

    在 ECharts 中,设置非数值部分(例如瀑布图的起始和结束部分)透明,你需要在 itemStyle 中针对这些特定数据点设置透明颜色。

    这里的数值是我为了演示随机输入的,大家在实战中的数值一定要严谨。

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <script src="js/echarts.js">script>
    6. head>
    7. <body>
    8. <div id="main" style="width: 800px; height: 400px">div>
    9. <script type="text/javascript">
    10. var myChart = echarts.init(document.getElementById("main"));
    11. var option = {
    12. title: {//设置标题
    13. text: '红消费表表',
    14. subtext: '数据来源于账单',
    15. },
    16. tooltip: {//动态触发
    17. trigger: 'axis',
    18. axisPointer:{
    19. type:'shadow'
    20. },
    21. },
    22. toolbox: {
    23. x:462,
    24. show: true,
    25. feature: {
    26. mark: { show: true },
    27. dataView: { show: true, readOnly: false },
    28. magicType: { show: true, type: ['line', 'bar'] },
    29. restore: { show: true },
    30. saveAsImage: { show: true },
    31. },
    32. },
    33. calculable: true,
    34. xAxis: [
    35. {
    36. type: 'category',
    37. spliLine:{show:false},
    38. data: ['总费用', '吃饭', '喝水洗澡','网购费', '网费', '日用品']//定义数据
    39. },
    40. ],
    41. yAxis: [
    42. {
    43. type: 'value'
    44. },
    45. ],
    46. series: [
    47. {
    48. name: '辅助',
    49. type: 'bar',
    50. stack: 'total',
    51. itemStyle: {
    52. normal:{
    53. barBorderColor:'rgba(0,0,0,0)',
    54. //barBorderColor:'20,20,0,0.5',备用颜色,更好可视化
    55. barBorderWidth:5,
    56. color:'rgba(0,0,0,0)'
    57. //color:'rgba(0,220,0,0.8)',备用颜色,更好可视化
    58. },
    59. emphasis:{
    60. barBorderColor:'rgba(0,0,0,0)',
    61. barBorderWidth:25,
    62. color:'rgba(0,0,0,0)',
    63. }
    64. },
    65. data:[0, 700, 400, 300, 200, 50]
    66. },
    67. {
    68. name:'生活费',
    69. type:'bar',
    70. stack:'total',
    71. itemStyle:{normal:{label:{show:true,positon:'inside'}}},
    72. data:[1500, 800, 350, 100, 150, 100],
    73. }
    74. ],
    75. };
    76. myChart.setOption(option);
    77. script>
    78. body>
    79. html>

    快去试试吧

    3.饼图

    变为饼图。你需要做这些:

    • 将 xAxis 和 yAxis 配置项移除,因为饼图不需要坐标轴。
    • 移除 series 中的 type: 'line',改为 type: 'pie'
    • 饼图通常不需要 tooltip 的 trigger: 'axis' 配置,因为它基于整个饼图的数据点触发提示框。
    • 添加饼图特有的配置项,比如 radius(饼图的半径)、center(饼图的中心位置)等。

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <script src="js/echarts.js">script>
    6. head>
    7. <body>
    8. <div id="main" style="width: 800px; height: 400px">div>
    9. <script type="text/javascript">
    10. var myChart = echarts.init(document.getElementById("main"));
    11. var option = {
    12. title: {
    13. text: '成绩表',
    14. subtext: '总分706',
    15. left: 'center'
    16. },
    17. tooltip: {
    18. trigger: 'item',
    19. formatter: '{a}
      {b}: {c} ({d}%)
      成绩: {e}'
    20. },
    21. legend: {
    22. orient: 'vertical',
    23. left: 'left',
    24. top: 'center',
    25. data: ['数学', '语文', '外语', '理科', '文科']
    26. },
    27. toolbox: {
    28. show: true,
    29. left: 'right',
    30. top: 'top',
    31. feature: {
    32. mark: { show: true },
    33. dataView: { show: true, readOnly: false },
    34. magicType: {
    35. show: true,
    36. type: ['pie', 'funnel'],
    37. option: {
    38. funnelAlign: 'left',
    39. max: 1548
    40. }
    41. },
    42. restore: { show: true },
    43. saveAsImage: { show: true }
    44. }
    45. },
    46. series: [
    47. {
    48. name: '成绩',
    49. type: 'pie',
    50. radius: '66%',
    51. center: ['50%', '50%'],
    52. clockWise: true,
    53. data: [
    54. {value: 17, name: '语文', },
    55. {value: 13, name: '数学', },
    56. {value: 12, name: '外语', },
    57. {value: 21, name: '物理,化学', },
    58. {value: 37, name: '生物,地理,历史', },
    59. ],
    60. scoreData: [123, 95, 88, 150, 250]
    61. }
    62. ]
    63. };
    64. option.tooltip.formatter = function (params) {
    65. var seriesData = option.series[0].data;
    66. var scoreData = option.series[0].scoreData;
    67. var index = params.dataIndex;
    68. return params.seriesName + '
      '
      + params.name + ': ' + params.value + ' (' + params.percent + '%)
      成绩: '
      + scoreData[index];
    69. };
    70. myChart.setOption(option);
    71. script>
    72. body>
    73. html>

    三、标题设置

    在ECharts中,title组件用于显示图表的标题。

    1. title: {
    2. text: '红红成绩表',
    3. borderWidth:2,//边框宽度
    4. borderColor:"#00FF00",//边框颜色
    5. subtext: '成绩来源于辅导员',//副标题
    6. textAlign:'',//
    7. left:"center",//水平居中
    8. top:"",
    9. },

    把他加到堆积折线图试试效果

    可以看到图表标题以及设置到了最中间了,并且加上了绿色的边框。

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <script src="js/echarts.js">script>
    6. head>
    7. <body>
    8. <div id="main" style="width: 800px; height: 400px">div>
    9. <script type="text/javascript">
    10. var myChart = echarts.init(document.getElementById("main"));
    11. var option = {
    12. title: {
    13. text: '红红成绩表',
    14. borderWidth:2,//边框宽度
    15. borderColor:"#00FF00",//边框颜色
    16. subtext: '成绩来源于辅导员',//副标题
    17. textAlign:'',//
    18. left:"center",//水平居中
    19. top:"",
    20. },
    21. tooltip: {
    22. trigger: 'axis',
    23. },
    24. legend: {
    25. data: ['2023年', '2024年'],
    26. top:"bottom",
    27. },
    28. toolbox: {
    29. show: true,
    30. feature: {
    31. mark: { show: true },
    32. dataView: { show: true, readOnly: false },
    33. magicType: { show: true, type: ['line', 'bar'] },
    34. restore: { show: true },
    35. saveAsImage: { show: true },
    36. },
    37. },
    38. calculable: true,
    39. xAxis: [
    40. {
    41. type: 'category',
    42. data:['2月','4月','6月','9月','11月','1月']
    43. },
    44. ],
    45. yAxis: [
    46. {
    47. type: 'value',
    48. data: ['红红'],
    49. },
    50. ],
    51. series: [
    52. {
    53. name: '2023年',
    54. type: 'line',
    55. data: [65,75,66,80,90,73],
    56. stack:"all",
    57. areaStyle:{},
    58. markPoint: { // 标记点
    59. data: [
    60. {
    61. type: 'max', name: '最大值'
    62. },{
    63. type: 'min', name: '最小值'
    64. }
    65. ]
    66. },
    67. markLine: { // 标记线
    68. data: [
    69. {
    70. type: 'average', name: '平均值'
    71. }
    72. ]
    73. },
    74. },
    75. {
    76. name: '2024年',
    77. type: 'line',
    78. data: [65,88,75,40,60,72],
    79. stack:"all",
    80. areaStyle:{},
    81. markPoint: { // 标记点
    82. data: [
    83. {
    84. type: 'max', name: '最大值'
    85. },{
    86. type: 'min', name: '最小值'
    87. }
    88. ]
    89. },
    90. markLine: { // 标记线
    91. data: [
    92. {
    93. type: 'average', name: '平均值'
    94. }
    95. ]
    96. },
    97. },
    98. ],
    99. };
    100. //使用刚指定的配置项和数据显示图表
    101. myChart.setOption(option);
    102. script>
    103. body>
    104. html>

    拓展-标题设置常用属性

    属性名类型默认值说明
    textstring''主标题文本,支持使用 \n 换行。
    subtextstring''副标题文本,支持使用 \n 换行。
    leftstring / number'auto'标题组件离容器左侧的距离。
    topstring / number'auto'标题组件离容器上侧的距离。
    textAlignstring'left'主标题的水平对齐方式,可选值为:'left''center''right'
    textVerticalAlignstring'top'垂直对齐方式,可选值为:'top''middle''bottom'
    textStyleobject{}主标题样式,包括颜色、字体、对齐方式等。
    subtextStyleobject{}副标题样式,包括颜色、字体、对齐方式等。
    paddingnumber / array0内边距,单位是像素,可以是单一数字,也可以是数组分别表示上、右、下、左的内边距。
    itemStyleobject{}标题标记的图形样式,例如颜色、边框等。
    backgroundColorstring'transparent'标题背景色,默认为透明。
    borderColorstring'#ccc'标题边框颜色。
    borderWidthnumber0标题边框线宽。
    padding[number, number, number, number][0, 0, 0, 0]标题内边距,单位px,默认各方向内边距为0,顺序为:上、右、下、左。
    shadowBlurnumber0图形阴影的模糊大小。
    shadowColorstring'rgba(0, 0, 0, 0.5)'图形阴影的颜色。
    shadowOffsetXnumber0图形阴影在水平方向上的偏移距离。
    shadowOffsetYnumber0图形阴影在垂直方向上的偏移距离。
    textBorderColorstring'#000'文本边框颜色。
    textBorderWidthnumber0文本边框线宽。
    zlevelnumber0所有图形的 zlevel 值。
    znumber2组件的所有图形的 z 值。

  • 相关阅读:
    数据结构——队列
    计算机网络(一):计算机网络概念、功能、组成
    关于生命的本质 复制
    基于ssm框架的农产品扶农商农平台的设计与实现
    PHP 在线学习平台系统mysql数据库web结构layUI布局apache计算机软件工程网页wamp
    基于SSM+SpringBoot+VUE前后端分离的停车场管理系统
    mariadb弱口令登录
    MySQL高级:(一)MySQL逻辑架构
    vue3接口封装 亲测有效
    C语言指针操作(七)*指针数组和多重指针
  • 原文地址:https://blog.csdn.net/qq_49513817/article/details/136740464