Echarts中的折线图,多个Y轴集中在左侧(在Vue中使用多个Y轴的折线图)

news/2024/7/8 10:28:24 标签: echarts, vue.js

简述:在 ECharts 中,创建一个带有多个 Y 轴的折线图,并且将这些 Y 轴都集中显示在图表的左侧,可以通过合理配置 yAxisseries 的属性来实现。简单记录



一. 函数代码

drawCarNumEcs() {
  // 初始化echarts图表,并绑定到id为"cfog_four"的DOM元素上
  var myChart = this.$echarts.init(document.getElementById("cfog_four"));
  
  // 定义颜色数组,用于设置图表中不同数据系列的颜色
  const colors = ["#e1c951", "#44cbb1", "#307ee2"];
  
  // 定义图表的配置选项
  var option = {
    // 设置图表的整体颜色方案
    color: colors,
    
    // 设置图表的标题,包含多个标题对象
    title: [
      {
        // text: "车辆存量数",             // 主标题文本(当前被注释掉)
        padding: [15, 0, 0, 40],          // 标题内边距:[上, 右, 下, 左]
        left: "left",                     // 标题水平对齐方式:靠左对齐
        itemGap: 20,                      // 主副标题之间的间距
        textStyle: {
          // 主标题文本样式
          color: "white",                 // 文字颜色:白色
          fontStyle: "normal",            // 字体风格:正常
          fontWeight: "bold",             // 字体粗细:粗体
          fontFamily: "宋体",             // 字体系列:宋体
          fontSize: 18,                   // 字体大小:18像素
        },
      },
      {
        // text: "辆",                     // 副标题文本(当前被注释掉)
        padding: [40, 0, 0, 90],           // 副标题内边距
        left: "left",                      // 副标题水平对齐方式:靠左对齐
        itemGap: 20,                       // 主副标题之间的间距
        textStyle: {
          // 副标题文本样式
          color: "silver",                 // 文字颜色:银色
          fontStyle: "normal",             // 字体风格:正常
          fontWeight: "bold",              // 字体粗细:粗体
          fontFamily: "宋体",              // 字体系列:宋体
          fontSize: 12,                    // 字体大小:12像素
        },
      },
      {
        // text: "4小时预测",              // 第二个标题文本(当前被注释掉)
        padding: [50, 60, 0, 0],          // 第二个标题内边距
        right: "right",                   // 第二个标题水平对齐方式:靠右对齐
        textStyle: {
          // 第二个标题文本样式
          color: "silver",                // 文字颜色:银色
          fontStyle: "normal",            // 字体风格:正常
          fontWeight: "normal",           // 字体粗细:正常
          fontFamily: "宋体",             // 字体系列:宋体
          fontSize: 14,                   // 字体大小:14像素
        },
      },
    ],
    
    // 设置图表的网格布局
    grid: {
      //表示acharts填充占比
      left: "20%",             // 网格左边缘距离容器左边缘的距离:20%
      // right: "3%",          // 网格右边缘距离容器右边缘的距离(当前被注释掉)
      // bottom: "3%",         // 网格下边缘距离容器下边缘的距离(当前被注释掉)
      top: "35%",              // 网格上边缘距离容器上边缘的距离:35%
      // containLabel: true,   // 防止标签溢出容器(当前被注释掉)
    },
    
    // 设置提示框配置
    tooltip: {
      trigger: "axis",            // 触发类型:坐标轴触发
    },
    
    // 设置图例
    legend: {
      right: "10%",                       // 图例右对齐,距离右边缘10%
      top: "10%",                         // 图例顶部对齐,距离顶部10%
      data: ["湿度", "气压", "风力"],      // 图例项
      textStyle: {
        color: "white",                   // 图例文字颜色:白色
      },
    },

    // 设置X轴
    xAxis: {
      type: "category",                    // 坐标轴类型:类目轴
      // 原始数据(当前被注释)
      // data: ["周一", "周二", "周三", "周四", "周五", "周六", "周日"], 
      data:
        this.hyData1.length > 1
          ? this.hyData1
          : [
              "08:00", "10:00", "12:00", "14:00", "16:00", "18:00", "20:00",
              "22:00", "00:00", "02:00", "04:00", "06:00", "08:00",
            ],
      // 如果this.hyData1长度大于1,则使用this.hyData1作为数据,否则使用默认时间数据
    },
    
    // 设置Y轴(有三个Y轴)
    yAxis: [
      {
        type: "value",          // 坐标轴类型:数值轴
        name: "湿度",           // 坐标轴名称
        position: "left",       // 坐标轴位置:左侧
        // max: 1000,           // 坐标轴最大值(当前被注释掉)
        // min: 59,             // 坐标轴最小值(当前被注释掉)
        // interval: 8.2,      // 坐标轴刻度间隔(当前被注释掉)
        offset: 0,             // 坐标轴相对于默认位置的偏移:无偏移
        axisLine: {
          show: true,          // 是否显示坐标轴线
          lineStyle: {
            color: colors[0],  // 坐标轴线颜色:使用颜色数组的第一个颜色
          },
        },
        splitLine: {
          show: true,             // 是否显示分隔线
          lineStyle: {
            // color: "red",      // 分隔线颜色(当前被注释掉)
            // width: 4,          // 分隔线宽度(当前被注释掉)
            type: "dotted",       // 分隔线类型:点线
          },
        },
      },
      {
        type: "value",            // 坐标轴类型:数值轴
        name: "气压",             // 坐标轴名称
        // max: 1000,             // 坐标轴最大值(当前被注释掉)
        // min: 59,               // 坐标轴最小值(当前被注释掉)
        // interval: 8.2,         // 坐标轴刻度间隔(当前被注释掉)
        position: "left",         // 坐标轴位置:左侧
        offset: 60,               // 坐标轴相对于默认位置的偏移:60像素
        axisLine: {
          show: true,             // 是否显示坐标轴线
          lineStyle: {
            color: colors[1],     // 坐标轴线颜色:使用颜色数组的第二个颜色
          },
        },
        splitLine: {
          show: false,           // 是否显示分隔线:不显示
          lineStyle: {
            // color: "red",     // 分隔线颜色(当前被注释掉)
            // width: 4,         // 分隔线宽度(当前被注释掉)
            type: "dotted",      // 分隔线类型:点线
          },
        },
      },
      {
        type: "value",          // 坐标轴类型:数值轴
        name: "风力",           // 坐标轴名称
        // max: 1000,           // 坐标轴最大值(当前被注释掉)
        // min: 59,             // 坐标轴最小值(当前被注释掉)
        // interval: 8.2,       // 坐标轴刻度间隔(当前被注释掉)
        position: "left",       // 坐标轴位置:左侧
        offset: 120,            // 坐标轴相对于默认位置的偏移:120像素
        axisLine: {
          show: true,           // 是否显示坐标轴线
          lineStyle: {
            color: colors[2],   // 坐标轴线颜色:使用颜色数组的第三个颜色
          },
        },
        splitLine: {
          show: true,         // 是否显示网格线:不显示
          lineStyle: {
            // color: "red",   // 分隔线颜色(当前被注释掉)
            // width: 4,       // 分隔线宽度(当前被注释掉)
            type: "dotted",    // 分隔线类型:点线
          },
        },
      },
    ],
    
    // 设置数据系列
    series: [
      {
        name: "湿度",         // 系列名称
        type: "line",         // 图表类型:折线图
        data:
          this.hyData2.length > 1
            ? this.hyData2
            : [
                18, 18, 24, 28, 25, 19, 16, 28, 22, 17, 27, 17, 28, 14, 18,
                25, 19, 16, 26, 23, 27, 27,
              ],
        // 如果this.hyData2长度大于1,则使用this.hyData2作为数据,否则使用默认数据
        yAxisIndex: 0,         // 使用的Y轴索引:第一个Y轴
      },    
      {
        name: "气压",         // 系列名称
        type: "line",         // 图表类型:折线图
        data:
          this.peData2.length > 1
            ? this.peData2
            : [
                18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
                18, 18, 18, 18, 18, 18,
              ],
        // 如果this.peData2长度大于1,则使用this.peData2作为数据,否则使用默认数据
        yAxisIndex: 1,         // 使用的Y轴索引:第二个Y轴
      },
      {
        name: "风力",         // 系列名称
        type: "line",         // 图表类型:折线图
        data:
          this.wdData2.length > 1
            ? this.wdData2
            : [
                18, 25, 19, 16, 26, 23, 27, 27, 18, 28, 22, 17, 27, 17, 28,
                14, 8, 24, 28, 25, 19, 16,
              ],
        // 如果this.wdData2长度大于1,则使用this.wdData2作为数据,否则使用默认数据
        yAxisIndex: 2,        // 使用的Y轴索引:第三个Y轴
      },
    ],
  };
  
  // 使用配置项设置图表
  option && myChart.setOption(option);
  
  // 添加窗口大小改变事件监听器,在窗口大小变化时调整图表大小
  window.addEventListener("resize", () => {
    myChart.resize();
  });

},},

二. 初始化渲染Echarts

// 组件挂载之后,才可以获取到元素
mounted() {

  // 在组件挂载后调用绘制函数
  this.drawCarNumEcs()();

  // 这里再添加窗口大小改变时的重绘监听器,防止报错
  window.addEventListener("resize", () => {
    if (document.querySelector(".acdt_Ecs")) {
      this.drawCarNumEcs()();
    }
  });

},},

三. 同样,使用的是全局注册,注意甄别

四. Echarts,更多操作

Echarts官网icon-default.png?t=N7T8https://echarts.apache.org/examples/zh/index.html#chart-type-line


http://www.niftyadmin.cn/n/5537095.html

相关文章

Chrome插件elasticsearch-head的安装和使用

文章目录 一、安装二、使用 一、安装 本来是想直接在Chrome扩展程序商店里安装的,但是它让我更新浏览器版本,因此就自己下载了.crx文件 elasticsearch-head的git地址是这个 我直接点进了crx然后点偏右上角下载标志下载(光标悬浮显示download…

Vue2前端实现数据可视化大屏全局自适应 Vue实现所有页面自适应 Vue实现自适应所有屏幕

Vue自适应所有屏幕大小,目前页面自适应,尤其是数据可视化大屏的自适应更是案例很多 今天就记录一下使用Vue全局自适应各种屏幕大小的功能 在Vue.js中创建一个数据大屏,并使其能够自适应不同屏幕大小,通常涉及到布局的响应式设计、CSS媒体查询、以及利用Vue的事件系统来处理…

Python文件读入操作

本套课在线学习视频(网盘地址,保存到网盘即可免费观看): ​​https://pan.quark.cn/s/e2ba7867f034​​ Python编程中,文件操作是一项基础且重要的技能。本文将详细介绍如何使用Python进行文件的打开、读取、写入和关…

Unity开箱即用的UGUI面板的拖拽移动功能

文章目录 👉一、背景👉二、效果图👉三、原理👉四、核心代码👉五,总结 👉一、背景 之前做PC项目时常常有面板拖拽移动的需求,今天总结封装一下,做成一个随时随地可复用的…

Kubernetes的基本概念与安装

Kubernetes的基本概念与安装 Kubernetes 是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。它由 Google 设计并捐赠给了 Cloud Native Computing Foundation,现在已经成为云原生技术的事实标准。 1. Kubernetes 的基本概念 1.1_Pods …

【web APIs】快速上手Day05(Bom操作)

目录 Web APIs - 第5天笔记js组成window对象BOM定时器-延迟函数案例-5秒钟之后消失的广告 JS执行机制location对象案例-5秒钟之后跳转的页面 navigator对象histroy对象 本地存储(今日重点)localStorage(重点)sessionStorage&#…

【PYG】dataloader和densedataloader

DenseDataLoader 是专门用于处理稠密图数据的,而 DataLoader 通常用于处理稀疏图数据。两者的主要区别在于它们的输入数据格式和处理方式。DenseDataLoader 适合处理固定大小的邻接矩阵和节点特征矩阵的数据,而 DataLoader 更加灵活,可以处理…

外挂级OCR神器:免费文档解析、表格识别、手写识别、古籍识别、PDF转Word

TextIn Tools是一款免费的在线OCR工具,支持快速准确的文字和表格识别,手写、古籍识别,提供PDF转Markdown大模型辅助工具,同时支持PDF、WORD、EXCEL、JPG、PPT等各类格式文件的转化。 TextIn Tools特点 免费:所有产品提…