每次我在 Highcharts 中设置我的最小值和最大值时,我从来没有得到我发送的确切最小值和最大值的图表,但总是有些接近。似乎 Highcharts 正在为轴选择一个间隔范围,如果我的最大值不符合正确的间隔,它会被忽略或四舍五入。
例如,如果我为 Y 轴设置最小值 0 和最大值 3125,我会得到一个从 0 开始的 Y 轴,然后以 500 的增量上升到最大值 3500,这根本不是我想要的。
我可以让图表使用精确的最大值还是总是以某种奇怪的方式四舍五入?
每次我在 Highcharts 中设置我的最小值和最大值时,我从来没有得到我发送的确切最小值和最大值的图表,但总是有些接近。似乎 Highcharts 正在为轴选择一个间隔范围,如果我的最大值不符合正确的间隔,它会被忽略或四舍五入。
例如,如果我为 Y 轴设置最小值 0 和最大值 3125,我会得到一个从 0 开始的 Y 轴,然后以 500 的增量上升到最大值 3500,这根本不是我想要的。
我可以让图表使用精确的最大值还是总是以某种奇怪的方式四舍五入?
您可以做几件事。
1)将您的 tickInterval 设置为一个数字,该数字均匀地划分为您的最大值
2) 将 y 轴的 'endOnTick' 设置为 false,并将 maxPadding 设置为 0。这会将图表最大值设置为您的规范,无论最后一个刻度落在哪里。
http://api.highcharts.com/highcharts#yAxis.tickInterval
将endOnTick属性设置为 false。
您可以使用http://api.highcharts.com/highcharts#yAxis.tickPositioner或使用 jlbriggs 引入的 tickInterval 设置最小/最大值。
正如jlbriggs所说,
Highcharts.Options
.....
yAxis: {
lineWidth: 1,
maxPadding: 0,
endOnTick: false,
labels: {
formatter: (value) => {
if(value.isLast !== true) {
const label_value = Math.ceil((Math.floor(value.value)) / 100) * 100; // round in between numbers to hundreds.
return this.yAxisLabelFormatting(label_value);
}
return this.yAxisLabelFormatting(value.value); // Maximum number of Y axis, you can do your code logic here.
}
}
}
...
内部动态代码:
const interval = (this.axisYmax / 8); // Here I'm using 8, you can use any number as your requirement.
(<Highcharts.AxisOptions>this.highChartOptions.yAxis)['tickInterval'] = interval;
快乐编码。:)