我有一個包含大量數據點的圖表。我現在正在設定極端值,所以它只顯示一個較小的數字 - 一次約有100個左右。我遇到的問題是我不想禁用日期範圍選擇器或手動輸入,但目前用戶可以擴展範圍選擇器以包含整個數據集。有什麼辦法限制這個,所以他們最多隻能抓取X個點數?爲範圍選擇器和間隔設置最大數據點
我也不想使用數據分組,因爲我對不同的數據組有不同的數據,所以重要的是分組不會改變。預先感謝在這一個任何指針!
我有一個包含大量數據點的圖表。我現在正在設定極端值,所以它只顯示一個較小的數字 - 一次約有100個左右。我遇到的問題是我不想禁用日期範圍選擇器或手動輸入,但目前用戶可以擴展範圍選擇器以包含整個數據集。有什麼辦法限制這個,所以他們最多隻能抓取X個點數?爲範圍選擇器和間隔設置最大數據點
我也不想使用數據分組,因爲我對不同的數據組有不同的數據,所以重要的是分組不會改變。預先感謝在這一個任何指針!
可惜你不能爲此目的而禁用範圍選擇,但是你可以重寫極端用戶後更改它們,請參閱:
api.highcharts.com/highstock#xAxis.events.afterSetExtremes因此,舉例來說,如果用戶需要4天的時間範圍,並且您想要2天的最大時間 - 抓取最小或最大值中的一個,並在極端情況下添加/移除兩天(以新的極值調用chart.xAxis.setExtremes())。當然,它會在SetExtremes之後調用另一個,所以它會是無限循環,但是現在極端將是正確的(兩天),所以它不會調用另一個setExtremes()。
下面是使用afterSetExtremes(如德克斯特介紹)來創建範圍選擇最大範圍的工作示例:
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);
}
}
}
}
從這個帖子
所以因爲我假設你想顯示所有點,我是對的嗎?如果是,您可以在所有範圍內使用setExtremes()http://api.highcharts.com/highcharts#Axis.setExtremes()。 – 2013-02-28 12:56:20
不,我目前只顯示部分數據。我想給他們來回滑動或查看不同時間段的能力,但不能增加總體時間段,從而增加更多數據。那有意義嗎?如果有幫助,我可以嘗試把jsfiddle放在一起。 – Dexter 2013-02-28 16:57:52
不幸的是,您不能爲此目的禁用範圍選擇器,但您可以在用戶更改它們後覆蓋極端值,請參閱:http://api.highcharts.com/highstock#xAxis.events.afterSetExtremes 因此,例如,如果用戶需要範圍爲4天,您希望最多2天 - 抓取最小或最大值中的一個,並在極端情況下添加/移除兩天(以新的極值調用chart.xAxis.setExtremes())。當然,它會在SetExtremes之後調用另一個,所以它會是無限循環,但是現在極端將是正確的(兩天),所以它不會調用另一個setExtremes()。 – 2013-03-01 13:08:41