echarts柱形图 划分多个markLine 标准线

<template>
  <div class="sub-echarts">
    <div id="chart" style="width: 600px; height: 400px"></div> 
  </div>
</template>
mounted() {
	this.myChart = echarts.init(document.getElementById("chart"));
	 // 绘制图表
    setTimeout(() => {
      this.drawChart2(); // 柱状加标记线
    }, 1000);
}methods: {
    drawChart2() {
      // 数据示例
      var data = [
        19.6, 0, 7.4, 4.8, 1.1, 12.1, 11.2, 20.4, 7.4, 9.8, 12.8, 7.4, 33.4,
      ];
      // 分区的规则
      var partition = [
        "1",
        "1",
        "1",
        "2",
        "2",
        "2",
        "3",
        "3",
        "3",
        "4",
        "4",
        "5",
        "5",
      ];
      var xAxis = [
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "10",
        "11",
        "12",
        "13",
      ];
      var partitionNames = ["压力超限", "压力超限2", "压力超限3", "压力超限4", "压力超限5"];

      // 找到每个区域的起始和结束下标
      var regions = [];
      var currentRegionStart = 0;
      for (var i = 1; i < partition.length; i++) {
        if (partition[i] !== partition[i - 1]) {
          regions.push({ start: currentRegionStart, end: i - 1 });
          currentRegionStart = i;
        }
      }
      regions.push({ start: currentRegionStart, end: partition.length });
      // 设置 markLine 数据
      var markLineData = regions.map((region) => {
        var regionStartIndex = region.start;
        var regionEndIndex = region.end;
        var markLinesInRegion = [];
        var partitionValue = partition[regionStartIndex];
        var markLineValue =
          partitionValue === "1"
            ? 5
            : partitionValue === "2"
            ? 10
            : partitionValue === "3"
            ? 15
            : partitionValue === "4"
            ? 20
            : partitionValue === "5"
            ? 25
            : 0;
        var color =
          partitionValue === "1"
            ? "#91C7AE"
            : partitionValue === "2"
            ? "#D48265"
            : partitionValue === "3"
            ? "#749F83"
            : partitionValue === "4"
            ? "#D6A357"
            : partitionValue === "5"
            ? "#61A0A8"
            : "#000"; // 默认颜色
        markLinesInRegion.push({
          coord: [xAxis[regionStartIndex], markLineValue], // 注意这里索引减1
          lineStyle: { color: color, type: "dashed" }, // 设置线条为实线
          symbol: "none", // 不显示符号
          name: partitionNames[parseInt(partitionValue) - 1],
          label: {
            show: true,
            position: "middle", // 将标签显示在虚线的上方并居中
            formatter: "{b}",
          },
        });
        markLinesInRegion.push({
          coord: [
            xAxis[regionEndIndex] || xAxis[xAxis.length - 1],
            markLineValue,
          ], // 注意这里索引减1
          lineStyle: { color: color, type: "dashed" }, // 设置线条为实线
          symbol: "none", // 不显示符号
          name: partitionNames[parseInt(partitionValue) - 1],
          label: {
            show: true,
            position: "middle", // 将标签显示在虚线的上方并居中
            formatter: "{b}",
          },
        });

        return markLinesInRegion;
      });
      
      this.myChart.setOption({
        xAxis: {
          type: "category",
          data: xAxis,
          axisLabel: {
            interval: 0, // 显示所有标签
          },
        },
        yAxis: [
          {
            type: "value",
            splitLine: {
              show: false,
            },
          },
        ],
        series: [
          {
            name: "Series 1",
            type: "bar",
            data: data,
          },
          {
            name: "Mark Line",
            type: "line",
            markLine: {
              data: markLineData,
            },
          },
        ],
      });
    },
}

最终的效果图:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值