Highcharts 设置范围选择器和间隔的最大数据点
我有一张有大量数据点的图表。我现在正在设置极端值,所以它只显示一个较小的数字——一次大约100个。问题是我不想禁用范围选择器或手动输入日期,但目前用户可以扩展范围选择器以包括整个数据集。有没有办法限制这一点,使他们最多只能获得X个点数Highcharts 设置范围选择器和间隔的最大数据点,highcharts,highstock,Highcharts,Highstock,我有一张有大量数据点的图表。我现在正在设置极端值,所以它只显示一个较小的数字——一次大约100个。问题是我不想禁用范围选择器或手动输入日期,但目前用户可以扩展范围选择器以包括整个数据集。有没有办法限制这一点,使他们最多只能获得X个点数 我也不想使用数据分组,不同的数据组有不同的数据,所以分组不改变很重要。提前感谢您对这一点的任何指点 不幸的是,您无法为此禁用范围选择器,但您可以在用户更改极端值后覆盖它们,请参见: 例如,如果用户选择范围为4天,而您希望最大值为2天,则从最小值或最大值中选择一个,
我也不想使用数据分组,不同的数据组有不同的数据,所以分组不改变很重要。提前感谢您对这一点的任何指点 不幸的是,您无法为此禁用范围选择器,但您可以在用户更改极端值后覆盖它们,请参见:
例如,如果用户选择范围为4天,而您希望最大值为2天,则从最小值或最大值中选择一个,并在极端值中添加/删除两天(使用新极端值调用chart.xAxis.setExtremes())。当然,它将调用另一个afterSetExtremes,因此它将是无限循环,但是现在极值将是适当的(两天),因此它不会调用另一个setExtremes()。下面是一个使用afterSetExtremes(如Dexter所述)从范围选择器创建最大范围的工作示例: 从这篇文章
既然我假设您想显示所有点,对吗?如果是,您可以对所有范围使用setextrems()。否,我当前仅显示部分数据。我想让他们能够前后滑动或查看不同的时间段,但不增加总体时间段,从而添加更多数据。这有意义吗?如果有帮助的话,我可以尝试将一个JSFIDLE放在一起。不幸的是,您不能为此禁用范围选择器,但您可以在用户更改极端值后覆盖它们,请参阅:例如,如果用户将范围设置为4天,而您希望最大值设置为2天,则获取最小值或最大值中的一个,并在极端值中添加/删除两天(调用chart.xAxis.setextrems()新的极端)。当然,它将调用另一个afterextremes,因此它将是无限循环,但是现在极端将是适当的(两天),因此它不会调用另一个setExtremes()。@PawełFus-感谢您提供的信息。这有点糟糕,但事实就是这样,我可能必须找到其他方法来做我想做的事情。您想添加该评论作为回答,以便我可以接受吗?
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);
}
}
}
}