Highcharts yAxis setExtremes far off

Posted

技术标签:

【中文标题】Highcharts yAxis setExtremes far off【英文标题】: 【发布时间】:2013-03-28 20:17:03 【问题描述】:

http://jsfiddle.net/wtftc/cGbUh/

$(function () 
$('#container').highcharts(
    chart: 
        plotBorderWidth: 1
    ,

    xAxis: 
    ,
    yAxis: [
        startOnTick: true,
        endOnTick: true,
    , 
        opposite: true,
        title: 
            text: null,   
        
    ],
    title: 
        text: '',   
    ,

    series: [
        data: [-67900.92, 454001.7, -204238.28, 322154.52, 162814.29, 940881.87, 454987.58, -190981.9, 77289.43, -578758.66, 232812.59, -553224.3, -161440.06, 203872.86, -487226.65, 582178.18, 88564.43, 250057.57, -62186.0600000001, 377721.25, -196420.64, 38713.0099999999, 284969.83, 166221.67],
    ]
);


// the button action
$('#button').click(function() 
    var chart = $('#container').highcharts();
    var yAxis = chart.yAxis[0];
    yAxis.options.startOnTick = false;
    yAxis.options.endOnTick = false;

    chart.yAxis[0].setExtremes(-1034970.057, 1034970.057);
);
);

我创建了一个 jsfiddle 示例来说明我正在尝试做的事情。我用示例中的数据加载了一个图表,然后我想为我的轴设置自定义值。我设置的极值是 -1034970.057、1034970.057,因为我希望我的 y 轴值是对称的。

但是,我在图表中最终得到的是 yAxis 极端值 -1.5m 和 +3m,而不是 -1.5m 和 +1.5m。我要求它是对称的,但是在你按下设置极端按钮后,你可以看到它不是对称的。

我的数据是动态的,并且会根据他们正在查看的页面上的设置而变化,因此这些数据只是我可能遇到的众多场景之一的示例。这意味着我不能硬编码滴答间隔或滴答计数。有没有办法让它对称?

【问题讨论】:

【参考方案1】:

我通过在图表中将 start/endOnTick 设置设置为 false 并在点击时设置为 true 来使其工作。

http://jsfiddle.net/uNvvk/

yAxis: [
        startOnTick: false,
        endOnTick: false,
    , 


yAxis.options.startOnTick = true;
yAxis.options.endOnTick = true;

我不知道为什么会这样!

【讨论】:

谢谢,我很欣赏这个想法,但我的数据是动态的,我不想切换,并且 startOnTick 和 endOnTick 变量强制 2 次重绘。在这个例子中,我只有大约 25 个数据点,但我可以在屏幕上的几个图表上分别有几百个数据点,因此每次有人单击页面上的按钮时重绘两次会变得很昂贵。

以上是关于Highcharts yAxis setExtremes far off的主要内容,如果未能解决你的问题,请参考以下文章

Highcharts:向 yAxis 添加一个自定义标签

Highcharts yAxis setExtremes far off

解决 Highcharts 中 yAxis 的 max 设置无效的问题

highcharts yaxis 开始于 1 分钟:1 不工作

Highcharts yAxis.max 动态管理刻度间隔

Highcharts JS 的样式问题