我有一个图表,我想根据用户的日期范围显示它。该特定图表每 15 分钟就有一个数据点。因此,如果用户选择较大的日期范围,每个系列可能会有很多数据点。这是几个例子:
在第一个示例中,图表确实显示了。在第二个示例中,图表不显示。有一个 Highstock 演示(52,000 个数据分组点)可处理大量数据点。我尝试将上面的图表更改为 highstock 图表,但结果仍然相同。
我可以做什么来解决这个问题?
这是由于涡轮阈值选项:
“当一个系列包含一个比这个长的数据数组时,只有一个 数字的维数组,或具有 x 和 y 的二维数组 值是允许的。另外,只测试第一点,其余的 假设格式相同。这节省了昂贵的数据检查费用 并在长系列中建立索引。”
默认设置为1000点。您的图表未渲染,因为系列中的每个点都是一个对象,并且它们的数量大于阈值。
这里有一个 jfFiddle 演示了将阈值设置为 2000 时的绘图。
这是修改后的代码部分:
plotOptions: {
spline: {
turboThreshold: 2000,
...
另一种解决方案是将系列数据编码在二维数组中,而不是让每个点由具有 x-y 属性的对象表示。
如果您使用 PHP 生成响应,turboThreshhold 的解决方法是这样的:
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);
}