echarts柱状堆叠图实现示例(图例和x轴都是动态的)

作者:崽崽的谷雨 时间:2024-04-29 13:21:03 

问题描述: 

 echarts柱状堆叠图,是很常用的图表,官网的例子很简单 。图例(legend),x轴(xAxis)都是写死的。但是一般实际应用中都是 动态的。下面就举个例子,实现图例和x轴都是动态的 柱状堆叠图。

echarts柱状堆叠图实现示例(图例和x轴都是动态的)

echarts 官网柱状 堆叠图 示例

 实现思路及步骤:

思路:通过官网的例子,我们能知道

  1.  xAxis 是一个数组 

  2.  series 是一个数组对象  其中name需要 对应着的是图例,有几个图例 series里就应该有几个项。需要把你的数据处理成 和例子数据结构一样的。

  3. stack 这个属性 很重要 Documentation - Apache ECharts stack API,官网的例子里 是三个柱状图并列。stack 相同的就会 堆叠在一起(stack 有几个他就会有几排并列,官网例子里有Ad,Search Engine他就有两个堆叠,去掉没有 stack属性的就能看到了)。

知道了这些就 很清晰了。

  • 第一步就是 遍历数据 ,找出 x轴的数据(切记要去重)

  • 遍历数据 生成 series

其实就是对数据的处理。 

示例:

 把这样的数据 做成堆叠图

let data = [
       { 日期: '2022-08-16', 要素名称: '空调液加注-正压压力', 报警总次数: 15 },
       { 日期: '2022-08-16', 要素名称: '空调液加注-正压检漏值', 报警总次数: 3 },
       { 日期: '2022-08-16', 要素名称: '刹车液加注-正压压力', 报警总次数: 5 },
       { 日期: '2022-08-17', 要素名称: '刹车液加注-二次抽真空值', 报警总次数: 6 },
       { 日期: '2022-08-17', 要素名称: '刹车液加注-二次抽真空时间', 报警总次数: 6 },
       { 日期: '2022-08-17', 要素名称: '刹车液加注-加注量', 报警总次数: 3 },
       { 日期: '2022-08-17', 要素名称: '空调液加注-正压压力', 报警总次数: 45 }, ,
       { 日期: '2022-08-17', 要素名称: '刹车液加注-真空检漏值', 报警总次数: 3 },
       { 日期: '2022-08-17', 要素名称: '刹车液加注-含水量', 报警总次数: 3 },
       { 日期: '2022-08-17', 要素名称: '刹车液加注-真空检漏时间', 报警总次数: 3 },
       { 日期: '2022-08-17', 要素名称: '空调液加注-二次抽真空值', 报警总次数: 3 },
       { 日期: '2022-08-17', 要素名称: '刹车液加注-正压压力', 报警总次数: 15 },
       { 日期: '2022-08-18', 要素名称: '刹车液加注-加注量', 报警总次数: 6 },
       { 日期: '2022-08-18', 要素名称: '刹车液加注-正压压力', 报警总次数: 23 },
       { 日期: '2022-08-18', 要素名称: '刹车液加注-正压检漏值', 报警总次数: 3 },
       { 日期: '2022-08-18', 要素名称: '空调液加注-加注量', 报警总次数: 3 },
       { 日期: '2022-08-18', 要素名称: '刹车液加注-精真空值', 报警总次数: 6 },
       { 日期: '2022-08-18', 要素名称: '空调液加注-正压压力', 报警总次数: 69 },
       { 日期: '2022-08-18', 要素名称: '空调液加注-正压检漏时间', 报警总次数: 3 },
       { 日期: '2022-08-19', 要素名称: '刹车液加注-含水量', 报警总次数: 6 },
       { 日期: '2022-08-19', 要素名称: '刹车液加注-正压压力', 报警总次数: 31 },
       { 日期: '2022-08-19', 要素名称: '刹车液加注-精真空值', 报警总次数: 12 },
       { 日期: '2022-08-19', 要素名称: '空调液加注-正压压力', 报警总次数: 99 },
       { 日期: '2022-08-19', 要素名称: '刹车液加注-真空检漏值', 报警总次数: 6 },
       { 日期: '2022-08-19', 要素名称: '空调液加注-正压检漏值', 报警总次数: 6 },
       { 日期: '2022-08-19', 要素名称: '空调液加注-正压检漏时间', 报警总次数: 6 },
       { 日期: '2022-08-19', 要素名称: '空调液加注-真空检漏值', 报警总次数: 12 },
       { 日期: '2022-08-20', 要素名称: '刹车液加注-加注量', 报警总次数: 12 },
       { 日期: '2022-08-20', 要素名称: '刹车液加注-含水量', 报警总次数: 12 },
       { 日期: '2022-08-20', 要素名称: '刹车液加注-正压检漏值', 报警总次数: 9 },
       { 日期: '2022-08-20', 要素名称: '刹车液加注-正压检漏时间', 报警总次数: 6 },
       { 日期: '2022-08-20', 要素名称: '刹车液加注-真空检漏时间', 报警总次数: 9 },
       { 日期: '2022-08-20', 要素名称: '空调液加注-加注量', 报警总次数: 9 },
       { 日期: '2022-08-20', 要素名称: '刹车液加注-真空检漏值', 报警总次数: 9 },
       { 日期: '2022-08-20', 要素名称: '空调液加注-正压检漏值', 报警总次数: 12 },
       { 日期: '2022-08-20', 要素名称: '空调液加注-真空检漏值', 报警总次数: 15 },
   ];

echarts柱状堆叠图实现示例(图例和x轴都是动态的)

代码:

把该代码复制到 官网例子里 就能看到效果 。

let data = [
       { 日期: '2022-08-16', 要素名称: '空调液加注-正压压力', 报警总次数: 15 },
       { 日期: '2022-08-16', 要素名称: '空调液加注-正压检漏值', 报警总次数: 3 },
       { 日期: '2022-08-16', 要素名称: '刹车液加注-正压压力', 报警总次数: 5 },
       { 日期: '2022-08-17', 要素名称: '刹车液加注-二次抽真空值', 报警总次数: 6 },
       { 日期: '2022-08-17', 要素名称: '刹车液加注-二次抽真空时间', 报警总次数: 6 },
       { 日期: '2022-08-17', 要素名称: '刹车液加注-加注量', 报警总次数: 3 },
       { 日期: '2022-08-17', 要素名称: '空调液加注-正压压力', 报警总次数: 45 }, ,
       { 日期: '2022-08-17', 要素名称: '刹车液加注-真空检漏值', 报警总次数: 3 },
       { 日期: '2022-08-17', 要素名称: '刹车液加注-含水量', 报警总次数: 3 },
       { 日期: '2022-08-17', 要素名称: '刹车液加注-真空检漏时间', 报警总次数: 3 },
       { 日期: '2022-08-17', 要素名称: '空调液加注-二次抽真空值', 报警总次数: 3 },
       { 日期: '2022-08-17', 要素名称: '刹车液加注-正压压力', 报警总次数: 15 },
       { 日期: '2022-08-18', 要素名称: '刹车液加注-加注量', 报警总次数: 6 },
       { 日期: '2022-08-18', 要素名称: '刹车液加注-正压压力', 报警总次数: 23 },
       { 日期: '2022-08-18', 要素名称: '刹车液加注-正压检漏值', 报警总次数: 3 },
       { 日期: '2022-08-18', 要素名称: '空调液加注-加注量', 报警总次数: 3 },
       { 日期: '2022-08-18', 要素名称: '刹车液加注-精真空值', 报警总次数: 6 },
       { 日期: '2022-08-18', 要素名称: '空调液加注-正压压力', 报警总次数: 69 },
       { 日期: '2022-08-18', 要素名称: '空调液加注-正压检漏时间', 报警总次数: 3 },
       { 日期: '2022-08-19', 要素名称: '刹车液加注-含水量', 报警总次数: 6 },
       { 日期: '2022-08-19', 要素名称: '刹车液加注-正压压力', 报警总次数: 31 },
       { 日期: '2022-08-19', 要素名称: '刹车液加注-精真空值', 报警总次数: 12 },
       { 日期: '2022-08-19', 要素名称: '空调液加注-正压压力', 报警总次数: 99 },
       { 日期: '2022-08-19', 要素名称: '刹车液加注-真空检漏值', 报警总次数: 6 },
       { 日期: '2022-08-19', 要素名称: '空调液加注-正压检漏值', 报警总次数: 6 },
       { 日期: '2022-08-19', 要素名称: '空调液加注-正压检漏时间', 报警总次数: 6 },
       { 日期: '2022-08-19', 要素名称: '空调液加注-真空检漏值', 报警总次数: 12 },
       { 日期: '2022-08-20', 要素名称: '刹车液加注-加注量', 报警总次数: 12 },
       { 日期: '2022-08-20', 要素名称: '刹车液加注-含水量', 报警总次数: 12 },
       { 日期: '2022-08-20', 要素名称: '刹车液加注-正压检漏值', 报警总次数: 9 },
       { 日期: '2022-08-20', 要素名称: '刹车液加注-正压检漏时间', 报警总次数: 6 },
       { 日期: '2022-08-20', 要素名称: '刹车液加注-真空检漏时间', 报警总次数: 9 },
       { 日期: '2022-08-20', 要素名称: '空调液加注-加注量', 报警总次数: 9 },
       { 日期: '2022-08-20', 要素名称: '刹车液加注-真空检漏值', 报警总次数: 9 },
       { 日期: '2022-08-20', 要素名称: '空调液加注-正压检漏值', 报警总次数: 12 },
       { 日期: '2022-08-20', 要素名称: '空调液加注-真空检漏值', 报警总次数: 15 },
   ];
   console.log(data)
   let date = []; //x轴日期
   let lenged = []; //series的个数
   let s = [];
   data.map((item) => {
       date.push(item["日期"]);
       lenged.push(item["要素名称"]);

});

date = [...new Set(date)]; //去重
   lenged = [...new Set(lenged)];
   console.log(date, lenged)
   let series = [];
   lenged.map((item) => { //生成  series
       let obj = {
           name: item,
           type: "bar",
           stack: "As",
           emphasis: {
               focus: 'series'
           },
           data: []
       };
       series.push(obj);
   });
   console.log(series)

data.map((item) => {//对series 的data进行处理

series.map((item1) => {

if (item1.name == item["要素名称"] && date.indexOf(item["日期"]) > -1) {
               item1.data[date.indexOf(item["日期"])] = item["报警总次数"]
           };
       })
   })

option = {
 tooltip: {
   trigger: 'axis',
   axisPointer: {
     type: 'shadow'
   }
 },
 legend: {},
 grid: {
   left: '3%',
   right: '4%',
   bottom: '3%',
   containLabel: true
 },
 xAxis: [
   {
     type: 'category',
     data: date
   }
 ],
 yAxis: [
   {
     type: 'value'
   }
 ],
 series: series
};

来源:https://blog.csdn.net/weixin_44058725/article/details/126588661

标签:echarts,柱状,堆叠图
0
投稿

猜你喜欢

  • Python生成数字图片代码分享

    2023-03-02 04:27:18
  • Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)

    2022-10-10 19:11:55
  • Python日期操作学习笔记

    2021-07-27 21:15:21
  • Python+DeOldify实现老照片上色功能

    2021-07-13 00:04:46
  • Git 教程之基本操作详解

    2023-08-04 08:04:20
  • python 简单备份文件脚本v1.0的实例

    2022-05-01 01:47:53
  • IIS+PHP添加对webp格式图像的支持配置方法

    2023-05-28 11:20:11
  • sqlserver锁表、解锁、查看销表的方法

    2024-01-12 15:57:38
  • ASP生成html的新方法

    2011-04-02 11:04:00
  • Python实现列表删除重复元素的三种常用方法分析

    2022-02-17 20:21:36
  • Python万字深入内存管理讲解

    2021-06-30 15:49:33
  • python实现pptx批量向PPT中插入图片

    2021-10-05 23:18:29
  • Python 内置函数memoryview(obj)的具体用法

    2023-03-20 14:40:58
  • 详解pygame中Rect对象

    2021-01-09 04:37:58
  • Python 数据类型--集合set

    2021-11-23 21:17:54
  • 瞬间的设计 I

    2009-12-25 18:54:00
  • python 判断字符串当中是否包含字符(str.contain)

    2022-11-10 04:21:10
  • Go语言基础模板设计模式示例详解

    2024-02-01 16:29:32
  • 关于搜索建议的两点小问题

    2011-09-16 20:15:29
  • Oracle数据库opatch补丁操作流程

    2024-01-28 06:51:42
  • asp之家 网络编程 m.aspxhome.com