Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Highcharts 设置范围选择器和间隔的最大数据点_Highcharts_Highstock - Fatal编程技术网

Highcharts 设置范围选择器和间隔的最大数据点

Highcharts 设置范围选择器和间隔的最大数据点,highcharts,highstock,Highcharts,Highstock,我有一张有大量数据点的图表。我现在正在设置极端值,所以它只显示一个较小的数字——一次大约100个。问题是我不想禁用范围选择器或手动输入日期,但目前用户可以扩展范围选择器以包括整个数据集。有没有办法限制这一点,使他们最多只能获得X个点数 我也不想使用数据分组,不同的数据组有不同的数据,所以分组不改变很重要。提前感谢您对这一点的任何指点 不幸的是,您无法为此禁用范围选择器,但您可以在用户更改极端值后覆盖它们,请参见: 例如,如果用户选择范围为4天,而您希望最大值为2天,则从最小值或最大值中选择一个,

我有一张有大量数据点的图表。我现在正在设置极端值,所以它只显示一个较小的数字——一次大约100个。问题是我不想禁用范围选择器或手动输入日期,但目前用户可以扩展范围选择器以包括整个数据集。有没有办法限制这一点,使他们最多只能获得X个点数


我也不想使用数据分组,不同的数据组有不同的数据,所以分组不改变很重要。提前感谢您对这一点的任何指点

不幸的是,您无法为此禁用范围选择器,但您可以在用户更改极端值后覆盖它们,请参见:


例如,如果用户选择范围为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);
                    }
                }
            }
        }