Echarts之带箭头的折线图

需求:
在这里插入图片描述
鼠标移入:
在这里插入图片描述
在这里插入图片描述
1、容器:

<div id="line" style="width: 700px; height: 380px; background: rgba(2, 15, 43, 0.7)"></div>

2、在methods中

methods:{
 initChart() {
      let up =  "image://data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAdCAMAAADb7h9dAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAATlBMVEX///8A6psA6psA6ZsA6pwA65sA758A6psA6pwA6pwA6poA6psA6pwA6psA/78A6pwA/58A6pwA6psA6pUA6ZwA6p0A65sA6pwA6pv///+GCdEAAAAAF3RSTlMAVP2wYnAgeJ/vMM+gqwS3CMPwDHRgQBDFXh0AAAABYktHRACIBR1IAAAAB3RJTUUH5QEMAQQfFU0UXwAAAL5JREFUOMuVz+sCgiAMhuEvNTPDQ5bp/V9poSHbOAj7Od5HEIjPpVjYlDibqsgEqHIBrmeglotbHDT3Vq4eMdAsixRN7IbtkAu9WkPg/zEq9tXqB8flVtD3OIAcGnGsVg9gH9sFWalOAnG5FrRH33Egei1YD/QDBU7PRm3NOFiQ0v/Es3R71U6hHni93R6QQkGO+DkhznsuUnoq0norUnsj3B5z6LFaeHornMN28vZGeA5rICwUcmbO7IFPevoFDDov6xIsBXAAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjEtMDEtMTFUMTc6MDQ6MzErMDg6MDDhQ7tUAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIxLTAxLTExVDE3OjA0OjMxKzA4OjAwkB4D6AAAACB0RVh0c29mdHdhcmUAaHR0cHM6Ly9pbWFnZW1hZ2ljay5vcme8zx2dAAAAGHRFWHRUaHVtYjo6RG9jdW1lbnQ6OlBhZ2VzADGn/7svAAAAF3RFWHRUaHVtYjo6SW1hZ2U6OkhlaWdodAAyOaY9ED0AAAAWdEVYdFRodW1iOjpJbWFnZTo6V2lkdGgANDh/z0egAAAAGXRFWHRUaHVtYjo6TWltZXR5cGUAaW1hZ2UvcG5nP7JWTgAAABd0RVh0VGh1bWI6Ok1UaW1lADE2MTAzNTU4NzGBWoX4AAAAEXRFWHRUaHVtYjo6U2l6ZQA1NDRCQv4mTv8AAABGdEVYdFRodW1iOjpVUkkAZmlsZTovLy9hcHAvdG1wL2ltYWdlbGMvaW1ndmlldzJfOV8xNjA5OTAzNTkyOTAxODkyN184NV9bMF11BmgsAAAAAElFTkSuQmCC";
      let down =
"image://data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAdCAMAAADb7h9dAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAY1BMVEX/UFD8WVn/Wlr9Wlr9Wlr9WVn9Wlr8WVn9WVn/WFj8WVn/WVn8WVn9Wlr8Wlr9WVn/WVn9WVn9WVn9WFj9WVn/VVX9WVn9WVn/VVX9Wlr/WVn9Wlr8Wlr9Wlr9WVn///84kd9mAAAAHnRSTlMAEL8wz++Pn8DwIK9IrPew0Dzz8vXlGN/XEs1QgFhS7YhiAAAAAWJLR0QAiAUdSAAAAAd0SU1FB+UBDAEEBegv7SUAAADQSURBVDjLldDZFoIgEIBhiAozc8mybBnf/y3DBWVgxoTLmf87cBDCHLlTIubIPRxihOkhRgw9KY5qpSeEpq9NAGihmYeqEy0091BGaO6hjNDcQxmx9NuE228RuMciJcQZgBXZhbiDOFZkeSFWROl/RpZDIXhRSu8zqhxc4ItSep9RXQEDLPoejeob+MBdj70z6joIwbK2/Tyaeh/Y9dJPI9sHYFy7/TCa+xD0a9ybUT33BBAq8XqR3mENBKd5QBRonhAFWtT/B+0L4sD7g8/3B5Y8O4MmGOxHAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAxLTExVDE3OjA0OjA1KzA4OjAwm4OYpAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wMS0xMVQxNzowNDowNSswODowMOreIBgAAAAgdEVYdHNvZnR3YXJlAGh0dHBzOi8vaW1hZ2VtYWdpY2sub3JnvM8dnQAAABh0RVh0VGh1bWI6OkRvY3VtZW50OjpQYWdlcwAxp/+7LwAAABd0RVh0VGh1bWI6OkltYWdlOjpIZWlnaHQAMjmmPRA9AAAAFnRFWHRUaHVtYjo6SW1hZ2U6OldpZHRoADQ4f89HoAAAABl0RVh0VGh1bWI6Ok1pbWV0eXBlAGltYWdlL3BuZz+yVk4AAAAXdEVYdFRodW1iOjpNVGltZQAxNjEwMzU1ODQ1rRoSIgAAABF0RVh0VGh1bWI6OlNpemUANTczQkLp3PeUAAAARnRFWHRUaHVtYjo6VVJJAGZpbGU6Ly8vYXBwL3RtcC9pbWFnZWxjL2ltZ3ZpZXcyXzlfMTYwOTkwMzY1NTc5MTg2MzdfMThfWzBdb15qpQAAAABJRU5ErkJggg==";
      let danwei = "亿元";
      let XLabel = ["2019年", "2020年", "2021年"];
      let YLabel = ["8.73", "6.73", "8.70"];
      let YLabel2 = [12.73, -10.43, 18.12];
      let arrYLabel2 = [];
      /* 
      data:[
        {
          value:6,//数值
          symbol:"",//图片路径
          symbolSize:25//图片大小
        }
      ]
      */
      YLabel2.map((item) => {
        let obj = {};
        obj.value = item;

        if ((item + "").slice(0, 1) == "-") {
          obj.symbol = down;
        } else {
          obj.symbol = up;
        }
        obj.symbolSize = 25;
        arrYLabel2.push(obj);
      });
      let option = {
        color: ["#4F9EFD", "#00EA9C", "#FF923F"],
        tooltip: {
          trigger: "axis",
          axisPointer: { type: "none", crossStyle: { color: "#999" } },
          textStyle: {
            fontSize: 20,
            fontWeight: "bold",
            fontFamily: "BoldCondensed",
          },
          // formatter:
          formatter: function (params) {
            // console.log("1222", params);
            return (
              '<span style="font-size: 20px;font-weight: bold;font-family: SourceHanSansCN;">' +
              params[0].name +
              "</span>" +
              "<br/>" +
              params[0].marker +
              '<span style="color:' +
              params[0].color +
              ';font-size: 20px;font-weight: bold;font-family: SourceHanSansCN;">' +
              "\n" +
              params[0].value +
              danwei +
              "</span>" +
              "<br>" +
              "<div>" +
              `<img style="width:16px;height:16px" src="${params[1].data.symbol.slice(
                8
              )}">` +
              '<span style="color:' +
              [
                (params[1].value + "").slice(0, 1) == "-"
                  ? "#FC5A5A"
                  : "#00EA9C",
              ] +
              ';font-size: 20px;font-weight: bold;font-family: SourceHanSansCN;">' +
              "\n" +
              params[1].value +
              "同比增长率" +
              "</span>" +
              "</div>"
            );
          },
        },
        // legend: {
        //   data: ["钱", "同比增长率"],
        //   right: "0%",
        //   top: "20%",
        //   itemWidth: 10,
        //   itemHeight: 10,
        //   icon: "rect",
        //   textStyle: {
        //     fontSize: 18,
        //     color: "#A0B2D3",
        //     padding: [0, 2, 0, 2],
        //     fontFamily: "SourceHanSansCN-Regular",
        //   },
        // },
        grid: {
          left: "5%",
          right: "5%",
          bottom: "5%",
          top: "16%",
          containLabel: true,
        },
        xAxis: [
          {
            type: "category",
            data: XLabel,
            axisPointer: { type: "shadow" },
            axisLabel: {
              color: "#A0B2D3",
              fontSize: 20,
              interval: 0,
              fontWeight: "bold",
              padding: [2, 0, 0, 0],
              textStyle: { fontFamily: "BoldCondensed,SourceHanSansCN" },
            },
            axisTick: {
              show: false,
            },
          },
        ],
        yAxis: [
          {
            type: "value",
            // interval: 3,
            axisLabel: {
              formatter: "{value}",
              color: "#A0B2D3",
              fontSize: 26,
              fontWeight: "bold",
              textStyle: { fontFamily: "BoldCondensed" },
            },
            splitLine: {
              show: true,
              lineStyle: {
                color: ["rgba(22, 39, 60, 1)"],
                width: 1,
                type: "dotted",
              },
            },
            axisTick: { show: false },
            name: "(" + danwei + ")",
            nameTextStyle: {
              fontFamily: "SourceHanSansCN-Regular",
              color: "#A0B2D3",
              fontSize: 20,
              fontWeight: "bold",
              padding: [0, 0, -2, -58],
            },
          },
          {
            type: "value",
            max: 50, //此处调整 箭头 在折线下
            axisLabel: {
              show: false,
              formatter: "{value}",
              color: "#A0B2D3",
              fontSize: 18,
              fontWeight: "bold",
              textStyle: { fontFamily: "BoldCondensed;" },
            },
            axisLine: {
              show: false,
            },
            splitLine: {
              show: false,
              lineStyle: {
                color: ["rgba(22, 39, 60, 1)"],
                width: 1,
                type: "dotted",
              },
            },
            axisTick: { show: false },
          },
        ],
        series: [
          {
            type: "line",
            data: YLabel,
            lineStyle: { width: 3 },
            cursor: "pointer",
            symbol: "emptyCircle",
            symbolSize: 6,
            hoverAnimation: true,
            itemStyle: { color: "#4F9EFD", borderWidth: "6" },
            emphasis: { itemStyle: { color: "#fff", borderWidth: "1" } },
            yAxisIndex: 0,
          },
          {
            type: "line",
            data: arrYLabel2,
            lineStyle: { opacity: 0, width: 3 }, //隐藏 线
            cursor: "pointer",
            symbolSize: 20,
            hoverAnimation: true,
            // 圆点
            itemStyle: { color: "#00EA9C", borderWidth: "6" },
            // 鼠标移入
            // emphasis: { itemStyle: { color: "#fff", borderWidth: "1" } },
            yAxisIndex: 1,
            label: {
              normal: {
                color: "#A0B2D3",
                fontSize: 20,
                show: true,
                position: "top",
                formatter: "{c}%",
                fontWeight: "bold",
                fontFamily: "BoldCondensed,SourceHanSansCN",
              },
            },
          },
        ],
      };
      let myChart = this.$echarts.init(document.getElementById("line"));
      myChart.setOption(option);
      window.addEventListener("resize", function () {
        myChart.resize();
      });
    },
}

3、在mounted中调用

mounted() {
    this.initChart();
  },

以上

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值