Incubator-echarts: 如何让Y轴刻度只取正整数。

Created on 17 Mar 2017  ·  15Comments  ·  Source: apache/incubator-echarts

One-line summary [问题简述]

在3.x版本柱状图中,数据较小时Y轴会出现小数刻度,当设置minInterval为整数时又会出现负数刻度。

Version & Environment [版本及环境]

  • ECharts version [ECharts 版本]:
    echars 3
  • Browser version [浏览器类型和版本]:
    all
  • OS Version [操作系统类型和版本]:
    win7 win10

Expected behaviour [期望结果]

Y轴只出现正整数刻度

ECharts option [ECharts配置项]


option = {
color: ['#3398DB'],
    tooltip : {
        trigger: 'axis',
        axisPointer : {            // 坐标轴指示器,坐标轴触发有效
            type : 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
        }
    },
    grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
    },
    xAxis : [
        {
            type : 'category',
            data : ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
            axisTick: {
                alignWithLabel: true
            }
        }
    ],
    yAxis : [
        {
            type : 'value',
           // minInterval:1     //会出现负数刻度
        }
    ],
    series : [
        {
            name:'直接访问',
            type:'bar',
            barWidth: '60%',
            data:[1,0,1,1,0,2,0]    //数据较小情况下
        }
    ]
}

Other comments [其他信息]


Most helpful comment

下面这样设置可以:

yAxis : [
        {
            type : 'value',
            interval: 1,     //会出现负数刻度
            min: 0,
        }
    ],

All 15 comments

设置一下 yAxis.min 试试

下面这样设置可以:

yAxis : [
        {
            type : 'value',
            interval: 1,     //会出现负数刻度
            min: 0,
        }
    ],

@MoonBall Thanks,测试可行。之前试过minInterval:1加min:0,但这两个是冲突的。

@MoonBall 又测试了下其他数据,interval设置为1并不会像minInterval那样强制所有刻度间隔最小为1,当数据出现小数时(如:[2.1,1.2,1,1,0,1,2]) Y轴刻度依旧会出现小数。但具体业务中我的数据都为整数,方法依然可行。

@kongxiangxiang 再设置下 yAxis.max = 3 就行

@MoonBall 上面例子数据随便造的,在具体应用中,要显示的数据(最大值)很可能是不确定的,设置max并不可行的。

这个可以根据自己的数据先计算出来嘛,然后在 setOptions

设置了interval之后如果数据相差比较大会出现Y轴坐标有很多的情况,那样怎么解决?

@HealerJTF 这种情况为什么要用interval呢?如果非要用可以将interval的值设置的大一些。

我试了一下就放弃了那种方式,然后又回到了起点的问题,Y轴的数值不是整数。你的是怎么解决的呢?

@HealerJTF 我当时是为了解决数据较小时,Y轴刻度会出现小数的问题。解决方法是:interval:1,min:0

喔喔。好的。谢谢。我再找找解决办法

@kongxiangxiang @HealerJTF 我用的3.4.5的版本依然这个样子。我目前的解决方案是,带有小数点的就不要给予label的文字

yAxis: {
        type: "value",
        axisLine: {
          show: false,
          onZero: false
        },
        axisTick: {
          show: false
        },
        axisLabel: {
          formatter: function (value, index) {
            if (parseInt(value) != value) {
              return "";
            }
            return parseInt(value);
          }
        },
        minInterval: 1,
    min: 0
  }

我获取了数据数组的最大值,然后最小值设为0,并且设置如果最大值小于5就让最大值等于5,目前没发现问题。

@HealerJTF 这样的确可以,就是要多些一些代码。还要额外判定感觉好麻烦,所以我就没用。

Was this page helpful?
0 / 5 - 0 ratings