echarts 上下双坐标轴Y轴对齐

1.问题:不同的数据源用同一个布局页面来显示会导致对齐一个页面另外的页面Y轴对不齐,如下图:

图1:

图2:

结果发现图1,对齐了,图2跑偏了,可是明明是同一个布局。

后来经过观察发现,图1和图二的下半部分的y轴数量坐标位数不一样,导致了长度不同,这样的话就不行,不能够适配其他的数据。所以就必须把上下两个轴的Y轴的数量的宽度固定下来,然后让它们左对齐或右对齐,而echarts 好像没有固定这个宽度的api.

所以,就采用补空位的方法。
本例中我是预设6位数的,不够就在其左边补齐,这样就使得上下的Y轴数据的宽度一样,所以就会对齐。

代码:

 workTime(group, a, b) {
      // ["1-2Y", "1-3M", "10-12Y", "10-20d", "12-15Y", "15Y~", "2-3Y", "21-30d", "3-5Y", "3-6M", "5-8Y", "5d", "6-10d", "6-12M", "8-10Y"] 
      var aa = ["A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C"];
      // console.log(group,a,b,"dsdsdsdsdsd")
      // 基于准备好的dom,初始化echarts实例
      var myChart = echarts.init(document.getElementById('workRate'));
      var option1 = {
        tooltip: {
          show: true,
          trigger: 'item',
          formatter: '{a}: {c}人',
          axisPointer: {
            type: 'shadow',
          }
        },
        legend: {
          data: [],
          top: 15,
          right: "0",
          orient: "vertical",
          center: true,
          textStyle: {
            textAlign: 'center',
            fontSize: 12
          },
          itemGap: 30,
          itemWidth: 25,
        },
        grid: [{
          show: false,
          bottom: '10%',
          left: 93,
          right: 100,
          containLabel: true,
          height: '40%'
        }, {
          show: false,
          top: '42%',
          left: 140,
          right: 100,
          height: '0%'
        }, {
          show: false,
          top: '3%',
          // left: 76,
          left: 93,
          right: 100,
          containLabel: true,
          height: '40%'
        }],
        yAxis: [{
          type: 'value',
          inverse: true,
          axisLine: {
            show: false,
          },
          axisTick: {
            show: false,
          },
          position: 'left',
          axisLabel: {
            show: true,
            formatter: function (params) {
              return _this.alignment(params);
            },
            textStyle: {
              color: '#646464',
              fontSize: 12,
              // align:'left'

            }
          },
          splitLine: {
            show: true,
            lineStyle: {
              color: "rgba(0,162,255,0.08)",
              width: 1,
            }
          }
        }, {
          gridIndex: 1,
          show: false,
        }, {
          gridIndex: 2,
          type: 'value',
          axisLine: {
            show: false,
          },
          axisTick: {
            show: false,
          },
          position: 'left',
          axisLabel: {
            show: true,
            formatter: function (params) {
              return _this.alignment(params)
            },
            textStyle: {
              color: '#646464',
              fontSize: 12,
              // align:'left'
            }
          },
          splitLine: {
            show: true,
            lineStyle: {
              color: "rgba(0,162,255,0.08)",
              width: 1,
            }
          }
        }, ],
        xAxis: [{
            type: 'category',

            position: 'bottom',
            axisLine: {
              show: false,
            },
            axisTick: {
              show: false
            },
            axisLabel: {
              show: false,
            },
            data: [],

          }, {
            gridIndex: 1,
            type: 'category',
            position: 'center',
            axisLine: {
              show: false
            },
            axisTick: {
              show: false
            },
            axisLabel: {
              show: true,
              align: 'center',
              textStyle: {
                color: '#323232',
                fontSize: 12
              }
            },

            data: aa,
          },
          {
            gridIndex: 2,
            type: 'category',
            position: 'top',
            axisLine: {
              show: false
            },
            axisTick: {
              show: false
            },
            axisLabel: {
              show: false,
            },
            data: [],
          }
        ],
        series: [{
          name: '',
          type: 'bar',
          barWidth: '40%',
          itemStyle: {
            normal: {
              color: '#49a1ff'
            }
          },
          label: {
            normal: {
              show: true,
              color: '#323232',
              position: 'top'
            }
          },
          xAxisIndex: 2,
          yAxisIndex: 2,
          data: a
        }, {
          name: '',
          type: 'bar',
          barWidth: '40%',
          itemStyle: {
            normal: {
              color: '#f9d446'
            }
          },
          label: {
            normal: {
              show: true,
              color: '#323232',
              position: 'bottom'
            }
          },

          data: b,
        }]
      };
      // 使用刚指定的配置项和数据显示图表。
      myChart.setOption(option1);
    },

    // 上下坐標軸對齊
    yk: function (val) {
      return 6 - val.toString().length;
    },

    alignment: function (val) {
      let val1 = val.toString();
      if (val1 != null) {
        let len = this.yk(val1);
        return String.fromCharCode(8194).repeat(len) + val1;

      }
    },

 

对于echarts左右y轴刻度,可以采用以下几种方法来解决: 1. 让两个坐标轴共用一个最大值,可以保持刻度一致。即,在两个y轴数组中找到最大值,然后将它作为共同的最大值。 2. 使用JavaScript中的Math.max方法来获取左右y轴数组的最大值,然后将两个最大值中的较大值作为共同的最大值。这样可以确保两个y轴的刻度一致。 以上方法可以确保echarts左右y轴的刻度保持一致,使图表更加清晰和易于比较。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [echartsy轴实现(解决刻度线不对齐)](https://blog.csdn.net/m0_55546349/article/details/121786189)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [MATLAB代码示例,用于建立模型表示物理或工程系统,并使用矩阵代数来描述系统的动态性质(附详细操作步骤)...](https://download.csdn.net/download/weixin_44609920/88237902)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值