ECharts柱状图或柱状堆叠图使用对数坐标系时,坐标轴不从0开始及数据展示异常的相关问题解决方案

问题描述:

当使用echarts柱状图或者柱状堆叠图时,使用对数坐标系引发的纵坐标不从0开始;以及当存在数据为0或1时,柱状图显示异常的相关问题解决。

问题一:当数据中不包含0时,纵坐标不从0展示

在这里插入图片描述

问题2:当数据中存在0或者存在1时,数据展示存在问题

在这里插入图片描述
在这里插入图片描述


解决方案:

第1步:手动修改值为0或值为1的数据,例如:

data.forEach(element1 => {
    dataTemp.push(element1 == 0 ? 1.0000001 : (element1 == 1 ? 1.45 : element1));
});

第2步:将y轴最小值1变成从0开始,代码及效果图如下:

yAxis: {
        type: 'log',
        axisLabel: {
             formatter: function (value) {
                 return value === 1 ? 0 : value;//第2步,将y轴最小值1变成从0开始;
             }
        }
},

在这里插入图片描述

第3步:修改series元素的lable及tooltip(为的是把刚刚改的数据在呈现时改回来),代码及效果如下:

label: {
        show: true,
        formatter: function (param) {
          if (param.data == 0) {
            return '';
          } else if (param.data == 1.0000001) {
              return '';
          } else if (param.data == 1.45) {
            return 1;
          } else {
            return param.data;
          }
        }
      },
tooltip: {
    trigger: 'axis',
    axisPointer: {
      type: 'shadow'
    },
    formatter: function (params) {
      let returnData = params[0].name + '<br/>';
      for (let i = 0; i < params.length; i++) {
        if (params[i].seriesName != '' && params[i].value != '' && params[i].value > 1.1) {//此处我过滤掉了value为0(也就是1.0000001)的数据
          let indexColor = params[i].color;
          returnData += '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background:' + indexColor + '"></span>';
          if (params[i].value == 1.45) {
            returnData += params[i].seriesName + ':1' + '</br>';
          } else {
            returnData += params[i].seriesName + ':' + (params[i].value) + '</br>';
          }
        }
      }
      return returnData;
    }
  },

在这里插入图片描述
至此,针对于柱状图的修复已经完成。

补充:当使用柱状堆叠图时。原理与柱状图相同,只要保证堆叠的第一个数据不是0或1即可,堆叠的数据在中间位置出现0和1不会影响展示。

使用ECharts,y轴默认情况下不会从0开始。这意味着纵坐标的最小值可以是大于0的任何值。这是因为有数据的范围比较大,如果强制从0开始,可能会导致表的细节难以观察。然而,有些情况下,当存在数据为0或1,可能会导致柱状图显示异常。为了解决这个问题,可以使用对数坐标系,并将y轴的最小值设为0,这样就可以解决柱状图显示异常问题。具体实现的方法如下: 1. 使用对数坐标系,通过设置yAxis.type为'log'来实现。 2. 修改yAxis.axisLabel.formatter的函数,将y轴最小值1变成从0开始,即将value为1的刻度改为0。 通过以上步骤,你就可以让echarts的y轴从0开始显示了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ECharts柱状图柱状堆叠使用对数坐标系坐标轴不从0开始及数据展示异常相关问题解决方案](https://blog.csdn.net/SFSEFSESEE/article/details/124147389)[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%"] - *2* [实现ECharts双Y轴左右刻度线一致的例子](https://download.csdn.net/download/weixin_38556737/12852047)[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 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值