Highcharts:Y轴网格线未对齐

时间:2014-06-25 18:56:13

标签: javascript highcharts

我正在尝试在Highcharts中创建一个包含多个数据系列的图表,每个系列都有不同的y轴。使用线性图表的标准功能(y轴定义数组)可以正常工作。但是,当其中一个y轴定义为对数时,网格线和轴标签会变得不对齐。

JSFiddle代码演示问题:JSFiddle

我希望“降雨”轴的标签位于与“温度”轴上的标签对应的位置。我只需设置gridLineWidth: 0即可隐藏有问题的网格线,但标签仍然未对齐。有一种简单的方法可以解决这个问题吗?我尝试使用tickPositioner功能的解决方案,但它似乎是一个复杂的解决方案,看似应该是一个常见的问题。

2 个答案:

答案 0 :(得分:0)

他们没有排队的原因是你的对数轴没有从零开始。日志轴上不能为零,但可以通过将min设置为1来接近。

 , { // Secondary yAxis
        min:1,

http://jsfiddle.net/4LKW2/

但是,如果你想强制最小值和最大值,我认为你必须使用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)],

http://jsfiddle.net/SWrd6/

答案 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个均匀间隔的蜱虫)。这适用于对数刻度,因为刻度位置值是在取对数之前设置的 - 允许偶数间隔刻度值在对数图上均匀分布。