2013-02-26 43 views
0

我有一個包含大量數據點的圖表。我現在正在設定極端值,所以它只顯示一個較小的數字 - 一次約有100個左右。我遇到的問題是我不想禁用日期範圍選擇器或手動輸入,但目前用戶可以擴展範圍選擇器以包含整個數據集。有什麼辦法限制這個,所以他們最多隻能抓取X個點數?爲範圍選擇器和間隔設置最大數據點

我也不想使用數據分組,因爲我對不同的數據組有不同的數據,所以重要的是分組不會改變。預先感謝在這一個任何指針!

+0

所以因爲我假設你想顯示所有點,我是對的嗎?如果是,您可以在所有範圍內使用setExtremes()http://api.highcharts.com/highcharts#Axis.setExtremes()。 – 2013-02-28 12:56:20

+0

不,我目前只顯示部分數據。我想給他們來回滑動或查看不同時間段的能力,但不能增加總體時間段,從而增加更多數據。那有意義嗎?如果有幫助,我可以嘗試把jsfiddle放在一起。 – Dexter 2013-02-28 16:57:52

+1

不幸的是,您不能爲此目的禁用範圍選擇器,但您可以在用戶更改它們後覆蓋極端值,請參閱:http://api.highcharts.com/highstock#xAxis.events.afterSetExtremes 因此,例如,如果用戶需要範圍爲4天,您希望最多2天 - 抓取最小或最大值中的一個,並在極端情況下添加/移除兩天(以新的極值調用chart.xAxis.setExtremes())。當然,它會在SetExtremes之後調用另一個,所以它會是無限循環,但是現在極端將是正確的(兩天),所以它不會調用另一個setExtremes()。 – 2013-03-01 13:08:41

回答

0

可惜你不能爲此目的而禁用範圍選擇,但是你可以重寫極端用戶後更改它們,請參閱:

api.highcharts.com/highstock#xAxis.events.afterSetExtremes因此,舉例來說,如果用戶需要4天的時間範圍,並且您想要2天的最大時間 - 抓取最小或最大值中的一個,並在極端情況下添加/移除兩天(以新的極值調用chart.xAxis.setExtremes())。當然,它會在SetExtremes之後調用另一個,所以它會是無限循環,但是現在極端將是正確的(兩天),所以它不會調用另一個setExtremes()。

0

下面是使用afterSetExtremes(如德克斯特介紹)來創建範圍選擇最大範圍的工作示例:

http://jsfiddle.net/B7vCR/3/

xAxis: { 
      minRange:6 * 30 * 24 * 3600 * 1000, 
      events: { 
       afterSetExtremes: function(e) { 
        var maxDistance = 10 * 30 * 24 * 3600 * 1000; //8 months time 
        var xaxis = this; 
        if ((e.max - e.min) > maxDistance) { 
         var min = e.max - maxDistance; 
         var max = e.max; 
         window.setTimeout(function() { 
          xaxis.setExtremes(min, max); 
         }, 1); 
        } 
       } 
      } 
     } 

從這個帖子

http://forum.highcharts.com/viewtopic.php?f=12&t=21741

相關問題