Echarts实现横轴数据节点不一致的绘制

效果

在这里插入图片描述

后端数据格式
[
 {
    "lineList": [
      {
        "ydata": "2",
        "xdata": "2022-05-24"
      },
      {
        "ydata": "51",
        "xdata": "2022-05-27"
      },
     {
        "ydata": "199",
        "xdata": "2022-05-29"
      },
    ],
    "unit": "°",
  },
 {
    "lineList": [
      {
        "ydata": "99",
        "xdata": "2022-05-23"
      },
      {
        "ydata": "399",
        "xdata": "2022-05-25"
      },
     {
        "ydata": "680",
        "xdata": "2022-05-30"
      },
    ],
    "unit": "°",
  }
]
echarts图标需要的数据格式
[
   {
      data: [
         ["2022-05-24", 2],
         ["2022-05-27", 51],
         ["2022-05-29", 199],
      ],
      type: "line",
  },
  {
      data:[
         ["2022-05-23", 99],
          ["2022-05-25", 399],
          ["2022-05-30", 680],
      ],
     type: "line",
   },
]
清洗数据的方法
let source = res.list;
var target = [];
 for (var i in source) {
       var data = [];
       var lineList = source[i].lineList;
       for (var j in lineList) {
           data.push([
             lineList[j].xdata,
              lineList[j].ydata,
          ]);
      }
      var obj = {
              data: data,
              type: "line",
              name: source[i].recognition,
     };
     target.push(obj);
}
图表绘制实现
          // 纵坐标单位
          let unitY = "";
          unitY = res.list[0].unit;
          //图例
          let newArr = [];
          let legend = [];
          newArr = res.list;
          legend = newArr.map((item) => item.recognition);
          let source = res.list;
          var target = [];
          for (var i in source) {
            var data = [];
            var lineList = source[i].lineList;
            for (var j in lineList) {
              data.push([
                moment(lineList[j].xdata).format("YYYY-MM-DD HH:mm:ss"),
                lineList[j].ydata,
              ]);
            }
            var obj = {
              data: data,
              type: "line",
              name: source[i].recognition,
            };
            target.push(obj);
          }
          // 获取Dom
          var chartDom = document.getElementById(id);
          // 初始化实例;
          var lineChart = echarts.init(chartDom);
          if (!chartDom) {
            return;
          }
          // 绘制配置
          var options;
          options = {
            title: {
              textStyle: {
                fontWeight: "normal",
              },
              left: "50%",
              top: "10",
            },
            //线的颜色
            tooltip: {
              trigger: "axis",
            },
            color: ["#FE8800", "#73F6AF"],
            legend: {
              data: legend,
              textStyle: {
                fontSize: 15,
                color: "#fff",
              },
              bottom: "15",
            },
            // 折线图内边距
            grid: {
              left: "3%",
              right: "3%",
              bottom: "18%",
              containLabel: true,
            },

            //用于区域缩放。以下配置只可缩放横轴
            // dataZoom: [
            //   {
            //     type: "slider",
            //     show: true,
            //     start: 0,
            //     end: 30,
            //     xAxisIndex: [0],
            //   },
            // ],
            xAxis: {
              type: "time", // x轴为 时间轴
              splitLine: { show: false },
              axisLine: {
                lineStyle: { width: 0 },
              },
              axisLabel: {
                color: "rgba(191, 202, 212, 1)",
                fontSize: 11,
              },
              axisTick: { show: false },
              boundaryGap: false,
            },
            yAxis: {
              axisLabel: {
                color: "rgba(191, 202, 212, 1)",
                fontSize: 11,
              },
              type: "value",
              name: unitY, //纵坐标单位
              nameTextStyle: {
                color: " #BFCAD4",
                nameLocation: "start",
                fontSize: "14",
              },
              min: 0, //取0为最小刻度
              scale: true, //自适应
              nameGap: 15,
              axisTick: {
                show: false, //刻度线
              },
              axisLine: {
                show: false, //隐藏y轴
              },
              splitLine: {
                // ⽹格线
                show: true,
                lineStyle: {
                  color: "#2e3f48",
                  type: "dotted",
                  width: "2",
                },
              },
            },
            series: target,
          };
          options && lineChart.setOption(options);

此片文章到这里就结束啦,各位同僚可以在自己的demo项目里演示一番,如有更好的方案可私聊一起讨论,如有其它疑问可评论区留言哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值