2015-06-25 79 views
0

我在使用setExtremes函數修改Highchart的yAxis極值時發現了一個小問題。 樣品在的jsfiddle - >http://jsfiddle.net/dhjqoycm/在Highchart中動態修改yAxis極值時的問題

HTML

<script src="//code.highcharts.com/4.1.4/highcharts.js"></script> 
<div id="container"></div> 
<input id="btnSetExtremes1" type="button" value="chart.yAxis[0].setExtremes(-38,65)"></input> 
<br/> 
<br/> 
<input id="btnSetExtremes2" type="button" value="chart.yAxis[0].setExtremes(-100,100)"></input> 
<br/> 
<br/> 
<input id="btnRevertToOriginal" type="button" value="Revert to Original Extremes"></input> 
<br/><hr> 
<label><b><u>Test with Your Own Extremes</u></b></label> 
<br/><br/> 
<input id="txtMin" type="textbox" placeholder="Enter Min Extreme"></input> 
<input id="txtMax" type="textbox" placeholder="Enter Max Extreme"></input> 
<input id="btnSetManualExtremes" type="button" value="Set Extremes to Chart"></input> 

JAVASCRIPT

$(function() { 
    $('#container').highcharts({ 
     title: { 
      text: 'Monthly Average Temperature', 
      x: -20 //center 
     },   
     xAxis: { 
      categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
       'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
     }, 
     yAxis: { 
      title: { 
       text: 'Temperature (°C)' 
      }, 
      plotLines: [{ 
       value: 0, 
       width: 1, 
       color: '#808080' 
      }] 
     }, 
     legend: { 
      enabled: false 
     }, 
     series: [{ 
      name: 'Vancouver', 
      data: [-29.9, -26.3, -20.8, -15.75, -11.9, -5.6, 0.6, -10.5, -16.8, -23.3, -28, { 
       dataLabels: { 
        enabled: true, 
        align: 'right', 
        formatter: function() { 
         return this.series.name; 
        }, 
        x: 0, 
        verticalAlign: 'bottom' 
       }, 
       y: -28 
      }] 
     }] 
    }); 

    var iOriginalMinExtreme = $('#container').highcharts().yAxis[0].getExtremes().min; 
    var iOriginalMaxExtreme = $('#container').highcharts().yAxis[0].getExtremes().max; 

    // the setExtremes1 button action 
    $('#btnSetExtremes1').click(function() { 
     var chart = $('#container').highcharts(); 
     chart.yAxis[0].setExtremes(-38, 65); 
    }); 

    // the setExtremes2 button action 
    $('#btnSetExtremes2').click(function() { 
     var chart = $('#container').highcharts(); 
     chart.yAxis[0].setExtremes(-100, 100); 
    }); 

    // the setExtremes2 button action 
    $('#btnRevertToOriginal').click(function() { 
     var chart = $('#container').highcharts(); 
     chart.yAxis[0].setExtremes(iOriginalMinExtreme, iOriginalMaxExtreme); 
    }); 

    // the setExtremes2 button action 
    $('#btnSetManualExtremes').click(function() { 
     var chart = $('#container').highcharts(); 
     chart.yAxis[0].setExtremes($('#txtMin').val(), $('#txtMax').val()); 
    }); 

}); 

在上述的jsfiddle樣品中,當「chart.yAxis [0] .setExtremes( -100,100)「按鈕被點擊,yAxis極值被設置爲從-100到100,這是完美的。當單擊「chart.yAxis [0] .setExtremes(-38,65)」時,y軸的極值預計爲-38和65(根據給定的輸入值),但圖表中設置的實際極值爲從-50到75.

圖中顯示的極值是否有任何方式與給定的輸入相同?在這種情況下,圖表應該顯示y軸從-38到65,而不是-50到75.

謝謝。

回答

1

startOnTickendOnTick爲false,請參閱:http://jsfiddle.net/dhjqoycm/30/如果你想顯示最後一跳和第一跳,你可以寫你自己的tickPositioner。但是,我不確定蜱之間的間隔應該用於極端情況:(-38,65)。範圍是103,不能很好地圓整。

+0

Hi Pawel,有沒有什麼辦法可以在創建圖表時根據一些條件將tickPositioner函數添加到折線圖的y軸上?或者我可以用任何方式在圖表渲染完成後更改折線圖yAxis中的位置(解釋:我已經創建了折線圖。點擊自定義按鈕時,需要將tickPositioner函數添加到yAxis中,圖表應該重新生成 - 基於我的tickPositioner函數給出的新滴答)。謝謝:) – Vicky

+0

當然,解釋是關鍵;只需使用'chart.yAxis [0] .update(options)',在opions中你將設置新的'tickPositioner'函數。 –

+0

非常感謝Pawel。這工作完美:) – Vicky