手把手教你用ECharts画柱状图

家电修理 2023-07-16 17:24www.caominkang.com电器维修

01 简单的柱状图

在ECharts中制作柱状图也十分简单,通过将series中的type设置为bar即可,代码如下 

  1. option = {  
  2.     xAxis: {  
  3.         type: 'category',  
  4.         data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']  
  5.     },  
  6.     yAxis: {  
  7.         type: 'value'  
  8.     },  
  9.     series: [{  
  10.         data: [100, 150, 120, 90, 50, 130, 110],  
  11.         type: 'bar'  
  12.     }]  
  13. }; 

可视化结果如图4-8所示。



▲图4-8 简单的柱状图

我们同样可以在代码中添加label以显示具体数值,例如在每个柱子上显示对应数值,代码如下 

  1. option = {  
  2.     xAxis: {  
  3.         type: 'category',  
  4.         data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']  
  5.     },  
  6.     yAxis: {  
  7.         type: 'value'  
  8.     },  
  9.     series: [{  
  10.         data: [100, 150, 120, 90, 50, 130, 110],  
  11.         type: 'bar',  
  12.         label: {  
  13.                 sho: true,  
  14.                 position: ''  
  15.             },  
  16.     }]   
  17. }; 

可视化结果如图4-9所示。



▲图4-9 简单的柱状图加入label

02 聚合柱状图

除了简单的柱状图,在实际场景中也会经常用到聚合柱状图,以更直观地比较各维度信息。例如,在原来的代码中加入legend,再加入一批数据,并将x轴的星期改为不同商场,代码如下 

  1. option = {  
  2.     title: {  
  3.         text: '产品一周销量情况'  
  4.     },  
  5.     xAxis: {  
  6.         type: 'category',  
  7.         data: ['A商场', 'B商场', 'C商场', 'D商场', 'E商场', 'F商场', 'G商场']  
  8.     },  
  9.     yAxis: {  
  10.         type: 'value'  
  11.     },  
  12.     legend: {  
  13.         data: ['A产品', 'B产品']  
  14.     },  
  15.     series: [{  
  16.         name: 'A产品',  
  17.         data: [100, 150, 120, 90, 50, 130, 110],  
  18.         type: 'bar',  
  19.         label: {  
  20.                 sho: true,  
  21.                 position: ''  
  22.             }  
  23.     },  
  24.     {  
  25.         name: 'B产品',  
  26.         data: [120, 130, 110, 70, 60, 110, 140],  
  27.         type: 'bar',  
  28.         label: {  
  29.                 sho: true,  
  30.                 position: ''  
  31.             }  
  32.     }]  
  33. }; 

可视化结果如图4-10所示。

结合图4-10,我们可以非常直观地比较不同商场的不同产品的销售情况。



▲图4-10 聚合柱状图

有时也会用到水平聚合柱状图,具体要如何实现呢?交换xAxis和yAxis中的内容,将数字label中的position由改为right即可,代码如下 

  1. option = {  
  2.     title: {  
  3.         text: '产品一周销量情况'  
  4.     },  
  5.     xAxis: {  
  6.         type: 'value'     
  7.     },  
  8.     yAxis: {  
  9.         type: 'category',  
  10.         data: ['A商场', 'B商场', 'C商场', 'D商场', 'E商场', 'F商场', 'G商场']  
  11.     },  
  12.     legend: {  
  13.         data: ['A产品', 'B产品']  
  14.     },  
  15.     series: [{  
  16.         name: 'A产品',  
  17.         data: [100, 150, 120, 90, 50, 130, 110],  
  18.         type: 'bar',  
  19.         label: {  
  20.                 sho: true,  
  21.                 position: 'right'  
  22.             }  
  23.     },  
  24.     {          name: 'B产品',  
  25.         data: [120, 130, 110, 70, 60, 110, 140],  
  26.         type: 'bar',  
  27.         label: {  
  28.                 sho: true,  
  29.                 position: 'right'  
  30.             }  
  31.     }]  
  32. }; 

可视化结果如图4-11所示。



▲图4-11 水平聚合柱状图

03 堆叠柱状图

除上述几种柱状图,堆叠柱状图也是非常常用的。下面我们来制作一个不同产品在不同商场销量的堆叠柱状图,代码如下 

  1. option = {  
  2.     tooltip: {  
  3.         trigger: 'axis',  
  4.         axisPointer: {                      type: 'shado'  
  5.         }  
  6.     },  
  7.     legend: {  
  8.         data: ['A商场', 'B商场', 'C商场', 'D商场', 'E商场']  
  9.     },  
  10.     xAxis: {  
  11.         type: 'value'  
  12.     },  
  13.     yAxis: {  
  14.         type: 'category',  
  15.         data: ['A产品', 'B产品', 'C产品', 'D产品', 'E产品', 'F产品', 'G产品']  
  16.     },  
  17.     series: [  
  18.         {  
  19.             name: 'A商场',  
  20.             type: 'bar',  
  21.             stack: '总量',  
  22.             label: {  
  23.                 sho: true,  
  24.                 position: 'inside'  
  25.             },  
  26.             data: [320, 302, 301, 334, 390, 330, 320]  
  27.         },  
  28.         {  
  29.             name: 'B商场',  
  30.             type: 'bar',  
  31.             stack: '总量',  
  32.             label: {  
  33.                 sho: true,  
  34.                 position: 'inside'  
  35.             },  
  36.             data: [320, 332, 301, 334, 490, 330, 310]  
  37.         },  
  38.         {  
  39.             name: 'C商场',  
  40.             type: 'bar',             stack: '总量',  
  41.             label: {  
  42.                 sho: true,  
  43.                 position: 'inside'  
  44.             },  
  45.             data: [220, 182, 191, 234, 290, 330, 310]  
  46.         },  
  47.         {  
  48.             name: 'D商场',  
  49.             type: 'bar',             stack: '总量',  
  50.             label: {  
  51.                 sho: true,  
  52.                 position: 'inside'  
  53.             },  
  54.             data: [150, 212, 201, 154, 190, 330, 410]  
  55.         },  
  56.         {  
  57.             name: 'E商场',  
  58.             type: 'bar',  
  59.             stack: '总量',  
  60.             label: {  
  61.                 sho: true,  
  62.                 position: 'inside'  
  63.             },  
  64.             data: [420, 532, 501, 234, 290, 330, 320]  
  65.         }     ]  
  66. }; 

可视化结果如图4-12所示。



▲图4-12 堆叠柱状图

在上述代码中,tooltip中的type为shado,所以当鼠标悬停在柱子上时,会显示阴影效果。这里的堆叠效果主要是通过stack参数决定的,当我们删除A商场的stack参数,并将B商场和C商场的stack参数改为“总量1”之后,其可视化结果如图4-13所示。所以可以这样理解stack参数相同的柱子会堆叠在一起,如果没有这个参数,则该部分不堆叠。



▲图4-13 堆叠柱状图调整堆叠效果

关于作者王大伟,毕业于华东理工大学,硕士学历,目前就职于平安金融壹账通,从事数据挖掘算法工作,擅长ECharts、Python、自然语言处理、数据分析挖掘、机器学习。曾获微软最有价值专家(MVP)荣誉称号。

本文摘编自《ECharts数据可视化入门、实战与进阶》,经出版方授权发布。 

 

Copyright © 2016-2025 www.caominkang.com 曹敏电脑维修网 版权所有 Power by