3

我正在使用 Highchart 在两个 yAxes 和一个日期时间 xAxis 上绘制多个系列(大约 20 个)。数据通过提供 JSON 答案的 PHP 脚本动态加载。到目前为止,一切都很好。

我的问题是,为了符合 Highchart,我必须通过网络发送每个系列的日期时间信息(当然,我可以在仅收到一次日期时间信息后更改 JS 中的 JSON 数据,但这也很麻烦) . 500 个数据点乘以 20 个系列乘以 13 个字节的时间戳 = 每次刷新的 130KB 流量,而其中的 1/20 就足够了。

我的问题是:是否有可能将“系列”(日期时间)信息传递给 xAxis,然后按出现顺序将 yAxes 系列分配给 xAxis 值?即我通过:

[1361796390000,1361796400000,1361796410000] 到 xAxis,[1,2,3] 到 yAxis

Highchart 将 1 分配给 1361796390000,将 2 分配给 1361796400000 等等?

感谢您的回答。

4

1 回答 1

1

您实际上不需要为系列中的每个数据点传递日期时间。您只需要传递系列的开始日期时间,然后使用 pointStart 让图表知道何时开始计数,如下所示:

series: [{
    name: 'Wind Speed',
    data: [0.52, 0.778, 0.746, 0.594, 0.716, 0.793, 0.648, 0.828, 0.202, 0.066, 0.116, 0.116, 0.17, 0.195, 0.051, 0, 0.368, 2.365, 2.841, 2.693, 2.416, 2.541, 2.429, 2.888],
    pointStart: 1360893600000,
    pointInterval: 3600000
}]

请参阅:http: //jsfiddle.net/Reality_Extractor/pNFYL/

pointStart 预计Unix 时间,尽管您可以通过多种不同的方式轻松得出所需的特定时间。出于演示目的,我只是在示例中对其进行了硬编码。

当您使用 pointStart 时,需要 pointInterval 才能准确地将时间分配给数据点。值得注意的是,这只适用于具有常规 pointIntervals 的数据。如果您有不规则的数据,您确实需要为每个数据点提供一个日期时间。

这并不能完全回答您关于将时间作为数组传递然后将其分配给 xAxis 的问题,但我确实相信 pointStart 方法没有数组分配复杂。

此外,有些相关,取决于您的数据更新频率,您应该将其缓存在服务器和客户端上,以防止在数据实际上没有更改时通过网络进行不必要的刷新。

于 2013-02-25T12:07:07.950 回答