echarts中设置双Y轴左右刻度线一致

本文详细介绍了如何在ECharts中设置两个独立的Y轴,确保它们的刻度线在视觉上保持一致,通过示例和代码展示了如何计算并设置合适的刻度间隔,适用于任务数和发送量的数据展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

echarts中设置双Y轴左右刻度线一致

一、效果图

在这里插入图片描述

二、主要代码

 this.taskxAxis = []
 this.taskSeries = [[], []]

taskInit() {
     function calMax(arr) {
         var max = arr[0]
         for (var i = 1; i < arr.length; i++) {
             // 求出一组数组中的最大值
             if (max < arr[i]) {
                 max = arr[i]
             }
         }
         var maxint = Math.ceil(max / 10) // 向上取整
         var maxval = maxint * 10 // 最终设置的最大值
         return maxval // 输出最大值
     }
     var maxappreg = calMax(this.taskSeries[0]) //任务数值
     var maxactive = calMax(this.taskSeries[1]) //发送量值
     var interval_left = maxappreg / 5 //左轴间隔
     var interval_right = maxactive / 5 //右轴间隔

     this.taskEchartLine = echarts.init(this.$refs['taskLineChart'])
     window.addEventListener('resize', () => {
         this.taskEchartLine && this.taskEchartLine.resize()
     })
     this.taskOption = {
         tooltip: {
             trigger: 'axis',
             backgroundColor: '#fff', // 提示框背景
             formatter: params => {
                 return `
                 <div style="border:0;color:#666;text-align: left;width:150px">
                   <p style="color:#000"> ${params[0].axisValue}</p>
                     <div class="flex justify-content-space-between">
                         <div>
                             <span> 任务数:
                             ${(function () {
                                 if (params[0].data >= 10000) {
                                     return params[0].data / 10000 + '万'
                                 } else if (params[0].data < 10000) {
                                     return params[0].data
                                 }
                             })()}
                             </span>
                         </div>
                     </div>
                     <div class="flex justify-content-space-between">
                         <div>
                             <span> 发送量:
                             ${(function () {
                                 if (params[1].data >= 10000) {
                                     return params[1].data / 10000 + '万'
                                 } else if (params[1].data < 10000) {
                                     return params[1].data
                                 }
                             })()}
                             </span>
                         </div>
                     </div>
                   </div> `
             },
             axisPointer: {
                 type: 'shadow',
             },
         },
         color: ['rgb(65,169,203)', 'rgb(246,126,60)'],
         legend: {
             data: ['任务数', '发送量'],
             left: 'right',
             selectedMode: false, //取消图例上的点击事件
         },
         grid: {
             left: '3%',
             right: '4%',
             bottom: '3%',
             containLabel: true,
         },
         xAxis: {
             type: 'category',
             boundaryGap: false,
             data: this.taskxAxis,
         },
         yAxis: [
             {
                 type: 'value',
                 name: '任务数',
                 min: 0,
                 max: maxappreg,
                 splitNumber: 5,
                 interval: interval_left,
                 axisLine: {
                     //y轴
                     show: false,
                 },
                 axisTick: {
                     //y轴刻度线
                     show: false,
                 },
                 axisLabel: {
                     color: '#444343',
                     formatter: function (value, index) {
                         var value
                         if (value >= 10000) {
                             value = value / 10000 + '万'
                         } else if (value < 10000) {
                             value = value
                         }
                         return value
                     },
                 },
             },
             {
                 type: 'value',
                 name: '发送量',
                 min: 0,
                 max: maxactive,
                 splitNumber: 5,
                 interval: interval_right,
                 axisLine: {
                     //y轴
                     show: false,
                 },
                 axisTick: {
                     //y轴刻度线
                     show: false,
                 },
                 axisLabel: {
                     color: '#444343',
                     formatter: function (value, index) {
                         var value
                         if (value >= 10000) {
                             value = value / 10000 + '万'
                         } else if (value < 10000) {
                             value = value
                         }
                         return value
                     },
                 },
             },
         ],
         series: [
             {
                 name: '任务数',
                 type: 'line',
                 data: this.taskSeries[0],
             },
             {
                 name: '发送量',
                 type: 'line',
                 yAxisIndex: 1, //在单个图表实例中存在多个y轴的时候有用
                 data: this.taskSeries[1],
             },
         ],
     }
     this.taskEchartLine.setOption(this.taskOption)
 },

链接: https://blog.youkuaiyun.com/LzzMandy/article/details/79400141?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值