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配置

相关推荐
尘中客17 小时前
放弃 Echarts?前端直接渲染后端高精度 SVG 矢量图流的踩坑记录
前端·javascript·echarts·前端开发·svg矢量图·echarts避坑
Dxy12393102162 天前
ECharts折线图入门学习:从基础到实战的完整指南
学习·信息可视化·echarts
yb305小白2 天前
echarts 排名Y轴数据过多出现滚动条,排名柱形条绑定事件
前端·echarts
Dxy12393102162 天前
ECharts入门学习:从零开始打造炫酷数据可视化
学习·信息可视化·echarts
533_4 天前
[echarts] 使用scss变量
前端·echarts·scss
漂移的电子4 天前
【echarts 细节】
前端·javascript·echarts
qq_342218125 天前
echarts 横向渐变格子柱状图 三层
前端·javascript·echarts
Red丶哞6 天前
echarts快速上手
echarts
漂移的电子7 天前
【常用】element-ui/moment.js/echarts.js等
javascript·ui·echarts
Julyued9 天前
vue3开发echarts热力图
前端·echarts