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 天前
Echarts常用配置项及解释
前端·javascript·echarts
winfredzhang2 天前
从零构建:基于 Node.js 与 ECharts 的量化交易策略模拟系统
前端·node.js·echarts·股票·策略
叫我辉哥e13 天前
新手进阶Python:办公看板集成多数据源+ECharts高级可视化
开发语言·python·echarts
weixin_462446233 天前
用 Python Tornado + Vue3 + ECharts 搭建 Docker 实时监控 WebSocket 仪表盘
python·echarts·tornado
叫我:松哥5 天前
基于神经网络算法的多模态内容分析系统,采用Flask + Bootstrap + ECharts + LSTM-CNN + 注意力机制
前端·神经网络·算法·机器学习·flask·bootstrap·echarts
tianxinw9 天前
uniapp x + vue3 实现echarts图表
前端·uni-app·vue·echarts
前端_Danny10 天前
用 ECharts markLine 实现节假日标注
前端·信息可视化·echarts
叫我:松哥10 天前
基于Flask+ECharts+Bootstrap构建的微博智能数据分析大屏
人工智能·python·信息可视化·数据分析·flask·bootstrap·echarts
Cherry的跨界思维13 天前
【AI测试全栈:Vue核心】22、从零到一:Vue3+ECharts构建企业级AI测试可视化仪表盘项目实战
vue.js·人工智能·echarts·vue3·ai全栈·测试全栈·ai测试全栈
该用户加载中13 天前
echarts柱状图实现斜切以及label展示
echarts