Echarts 实现 设备运行状态图(甘特图) 工业大数据展示

javascript 复制代码
  let option={
        tooltip: {
          formatter: function (params) {
            let startTime = new Date(params.value[1])
            let endTime= new Date(params.value[2]);
            //北京时间/时间戳转成日常时间
            function convert(date){
              var y = date.getFullYear();
              var m = date.getMonth() + 1;
              m = m < 10 ? "0" + m : m;
              var d = date.getDate();
              d = d < 10 ? "0" + d : d;
              var h = date.getHours();
              h = h < 10 ? "0" + h : h;
              var minute = date.getMinutes();
              minute = minute < 10 ? "0" + minute : minute;
              var s = date.getSeconds();
              s = s < 10 ? "0" + s : s;
              return y + "-" + m + "-" + d + " " + h + ":" + minute + ":" + s;
            }
            return params.marker + params.name + ': ' +convert(startTime)+'-'+convert(endTime)

          }
        },

        dataZoom: [
          {
            type: 'slider',
            filterMode: 'weakFilter',
            showDataShadow: false,
            top: 550,
            labelFormatter: ''
          },
          {
            type: 'inside',
            filterMode: 'weakFilter'
          }
        ],
        grid: {
          height: 450
        },
        xAxis: {
          // min: startTime,
          scale: true,
        },
        yAxis: {
          data: []
        },
        series: [
          {
            type: 'custom',
            renderItem: function (params, api) {
              var categoryIndex = api.value(0);
              var start = api.coord([api.value(1), categoryIndex]);
              var end = api.coord([api.value(2), categoryIndex]);
              var height = api.size([0, 1])[1] * 0.6;

              var rectShape = echarts.graphic.clipRectByRect({
                x: start[0],
                y: start[1] - height / 2,
                width: end[0] - start[0],
                height: height
              }, {
                x: params.coordSys.x,
                y: params.coordSys.y,
                width: params.coordSys.width,
                height: params.coordSys.height
              });

              return rectShape && {
                type: 'rect',
                shape: rectShape,
                style: api.style()
              };
            },
            itemStyle: {
              opacity: 0.8
            },
            encode: {
              x: [1, 2],
              y: 0
            },
            data: []
          }
        ]
      }
   option.yAxis.data = this.categories//this.categories是类型也就是y轴[XCG10001....]
      let data = []
      let types = [
        {name: '静止', color: 'red'},
        {name: '收油', color: 'green'},
        {name: '发油', color: '#e0bc78'},
      ];
      let startTime = ''
      let endTime = ''
      var baseTime = ''
      var duration = ''
      this.categories.forEach((item, index) => {
        for (var i = 0; i < this.monitoringList[index].data.length; i++) {
          var typeItem = types[Math.round(Math.random() * (types.length - 1))];
          if (i !== this.monitoringList[index].data.length - 1) {
            //this.monitoringList是后台获取的数据
            endTime = new Date(this.monitoringList[index].data[i + 1].createTime);
            duration = endTime.valueOf();
            startTime = new Date(this.monitoringList[index].data[i].createTime);
            baseTime = startTime.valueOf();
          }else {
            endTime = new Date(this.monitoringList[index].data[i].createTime);
            duration = endTime.valueOf();
            startTime = new Date(this.monitoringList[index].data[i].createTime);
            baseTime = startTime.valueOf();
          }
          data.push({
            name: typeItem.name,
            // value 第一个参数: 设备 index;
            //       第二个参数: 状态的开始时间;
            //       第三个参数: 状态的结束时间;
            //       第四个参数: 状态的持续时间;
            value: [index, baseTime, endTime, duration - baseTime],
            itemStyle: {
              normal: {
                color: typeItem.color
              }
            }
          });
        }
      });
      option.series[0].data = data
     option.xAxis = {
        scale: true,
        min: function(value) {
          return value.min - 20;
        },
        max: function(value) {
          return value.max + 20;
        },
        axisLabel:{
          color:"#8da5b2",
          formatter:(value,index)=>{
            let xDate = new Date(value);
            return xDate.getFullYear()+"-"+(xDate.getMonth()+1)+"-"+xDate.getDate()+" "+xDate.getHours()+":"+xDate.getMinutes()+":"+xDate.getSeconds();
          }
        }

      }

以上就是echarts性能图的option配置

相关推荐
小小尚@1 天前
WebGIS/ECharts 地图开发|MapLand 在线行政区划边界一键下载 GeoJSON 工具
前端·javascript·echarts
paopaokaka_luck2 天前
基于springboot3+vue3的精准扶贫管理系统(AI 问答、ECharts 图形化分析)
前端·人工智能·echarts
Dreams°1233 天前
【React+TS+ECharts可视化避坑:图表空白、不实时更新、数据池堆积卡顿完整复盘(附完整源码)】
前端·react.js·echarts
二进制漫游记3 天前
ECharts 从入门到实战|前端数据可视化完整教程
前端·信息可视化·echarts
张人玉6 天前
基于 Python 机器学习 与 PyQt5 桌面框架开发的可视化分析系统——基于大数据的网上购物消费行为分析可视化大屏
python·qt·机器学习·echarts·three.js
张人玉8 天前
基于 Python + PyQt5 的水果目标检测与分割可视化系统——水果深度学习识别可视化大屏
python·深度学习·qt·目标检测·sqlite·echarts
paopaokaka_luck9 天前
基于springboot3+vue3+uniapp的河南非遗数字图谱小程序(协同过滤算法、数字图谱展示、ECharts 图形化分析)
java·前端·spring boot·学习·小程序·uni-app·echarts
张人玉11 天前
茶树 NeRF(Neural Radiance Fields,神经辐射场)三维重建与数据分析可视化系统——基于神经辐射场的茶树三维重建方法实现可视化大屏
python·数据挖掘·数据分析·echarts·three.js
paopaokaka_luck11 天前
基于springboot3+vue3的车间生产管理系统(Echarts图形化分析、BI报表)
java·前端·spring boot·学习·echarts