我有一张图表,我想根据用户的日期范围显示。此特定图表每15分钟有一个数据点。因此,如果用户选择较大的日期范围,则每个系列可能会有很多数据点。以下是几个例子:Highcharts不显示具有大量数据点的系列
在第一个例子的图表显示确实。在第二个示例中,图表不显示。 Highstock演示(52,000 points with data grouping)与很多数据点一起工作。我试图将上面的图表更改为高股价图表,仍然有相同的结果。
我能做些什么来解决这个问题?
我有一张图表,我想根据用户的日期范围显示。此特定图表每15分钟有一个数据点。因此,如果用户选择较大的日期范围,则每个系列可能会有很多数据点。以下是几个例子:Highcharts不显示具有大量数据点的系列
在第一个例子的图表显示确实。在第二个示例中,图表不显示。 Highstock演示(52,000 points with data grouping)与很多数据点一起工作。我试图将上面的图表更改为高股价图表,仍然有相同的结果。
我能做些什么来解决这个问题?
这是由于turbo threshold选项:
“当一个系列包含一个数据数组,它是比这更长的时间,只有一个 号码的二维阵列,或具有x和y 二维阵列值,并且只有第一个点被测试,其他 被假定为相同的格式,这节省了昂贵的数据检查 和长序列索引。
默认设置为1000分。您的图表无法呈现,因为系列中的每个点都是一个对象,并且它们的数量大于阈值。
这里有一个jfFiddle展示你的情节设置为2000
这里的门槛工作的代码修改的部分:
plotOptions: {
spline: {
turboThreshold: 2000,
...
另一种解决方案是编码在2 d您的序列数据数组,而不是使用xy属性表示每个点,并使用xy属性表示对象。
很好的捕获,@Linger你应该使用2d数组形式的数据,除非你有一些强大的用例来做 –
为turboThreshhold一种解决方法是这样的,如果你用一代PHP你的回应:
if(count($responseObj) > 1000){
$modolo = round(count($responseObj)/1000);
for($i = count($responseObj)-1; $i >= 0 ; $i--){
if(($i % $modolo) != 0){
unset ($responseObj[$i]);
}
}
$responseObj = array_merge($responseObj);
}
你尝试过改变dataGrouping的单位?我实际上已经有了 –
。但是,如果用户放大,我希望分组适用于范围。即如果图表显示大量数据并按每天间隔分组。如果用户放大到一天,我希望分组更改为15分钟的时间间隔。看看上面的highstock示例,他们使用服务器调用来根据时间跨度填充图形。我可能必须弄清楚如何获得[** Loading **](http://www.highcharts.com/component/content/article/2-news/48-loading-millions-of-points-in-highcharts )在ASP.NET MVC 3环境中工作。 – Linger