我正在尝试在Highcharts中创建一个包含多个数据系列的图表,每个系列都有不同的y轴。使用线性图表的标准功能(y轴定义数组)可以正常工作。但是,当其中一个y轴定义为对数时,网格线和轴标签会变得不对齐。
JSFiddle代码演示问题:JSFiddle
我希望“降雨”轴的标签位于与“温度”轴上的标签对应的位置。我只需设置gridLineWidth: 0
即可隐藏有问题的网格线,但标签仍然未对齐。有一种简单的方法可以解决这个问题吗?我尝试使用tickPositioner
功能的解决方案,但它似乎是一个复杂的解决方案,看似应该是一个常见的问题。
答案 0 :(得分:0)
他们没有排队的原因是你的对数轴没有从零开始。日志轴上不能为零,但可以通过将min设置为1来接近。
, { // Secondary yAxis
min:1,
但是,如果你想强制最小值和最大值,我认为你必须使用tickPositioner或tickPositions,例如。
tickPositions:[Math.log(24)/Math.log(10),Math.log(42)/Math.log(10),Math.log(73)/Math.log(10),Math.log(129)/Math.log(10),Math.log(225)/Math.log(10),Math.log(400)/Math.log(10)],
答案 1 :(得分:0)
我最终使用tickPositioner
函数为我的问题创建了一个可行的(但非理想的)解决方案:
tickPositioner: function () {
if (this.tickInterval > .5) {
return null;
}
else {
var myInterval = (this.max - this.min) / 5;
return [this.min, this.min + myInterval, this.min + 2 * myInterval, this.min + 3 * myInterval, this.min + 4 * myInterval, this.max];
}
}
if
子句检查HighCharts库是否会自动将节拍间隔设置为10的幂(已经均匀间隔),如果不是,只需在设置的间隔内手动设置节拍(在这种情况下, 5个均匀间隔的蜱虫)。这适用于对数刻度,因为刻度位置值是在取对数之前设置的 - 允许偶数间隔刻度值在对数图上均匀分布。