Highcharts添加额外的系列和轴断开现有yAxis min / max

时间:2016-07-11 10:27:21

标签: javascript highcharts

在下面的小提琴中(基于Highcharts示例),第一个系列正确显示,占据了图表的整个高度。

http://jsfiddle.net/markalroberts/h9j53yk4/4/

但是,当您单击按钮添加系列时,将重新计算现有系列的比例(不是我想要的)。

我用来添加轴/系列/数据的代码:

chart.addSeries({
        type: 'line',
        yAxis: 1,
        data: [1016, 1016, 1015.9, 1015.5, 1012.3, 1009.5, 1009.6, 1010.2, 1013.1, 1016.9, 1018.2, 1016.7],
    })

如何将现有的series / yAxis组合设置为保持原来的状态,并将新系列设置为ontop(也缩放为使用图表的整个高度)

更新

根据迈克的回答,我必须做的只是:

alignTicks: false

1 个答案:

答案 0 :(得分:1)

使用多个轴可能很棘手。我在此Stack Overflow问题中找到了 kjfagan 的答案,对您的情况有帮助:Highcharts y-axis Ceiling not being respected

我在你的小提琴中所做的是首先只设置初始的y轴,并根据kjfagan的回答给它minPadding: 0maxPadding: 0属性:

yAxis: [{ 
    visible: true, 
    startOnTick: false, 
    endOnTick: false, 
    maxPadding: 0, 
    minPadding: 0
}],

接下来,在您的buttion,event中,我在此处为新轴设置了完整的属性集,包括minPaddingmaxPadding属性:

$('#button').click(function() {
    c.addAxis({ 
        visible: true, 
        startOnTick: false, 
        endOnTick: false, 
        maxPadding: 0, 
        minPadding: 0, 
        opposite: true });
    c.addSeries({yAxis:1})
    c.xAxis[0].series[1].setData(j.Lines[1].Data);
});

最后,正如GrzegorzBlachliński认真建议的那样,我为图表本身增加了marginTop

此外,我添加alignTicks: false以防止图表自动将轴调整到彼此的值,这可能导致一些不稳定或意外的行为,具体取决于您正在绘制的内容。

chart: {
    marginTop: 20,
    alignTicks: false
},

以下是您的小提琴的修改版本:http://jsfiddle.net/brightmatrix/h9j53yk4/9/

请注意,多次单击该按钮将添加新轴的多个实例,这些实例将显示为重复的轴标签。您还在原始小提琴的图表选项中多次声明yAxis;我删除了额外的选项。

最后一件事:您会注意到两个轴的网格线并不完全对齐。我在上面引用的问题中 Sualkcin 的答案提供了有关如何处理该问题的信息(请参阅https://stackoverflow.com/a/23549591/2596103)。

我希望这些信息对您有所帮助。