场景: 我正在使用 Flot JS 绘制带有每分钟数据的成交量条形图。例如,在 3 小时内,我从数据库中提取了 3 x 60 个数据点。

问题: 因为我有 6 个小时的数据点,而且图表的宽度只有 250 像素,每个条形只有 1 像素宽,没有边距。我想知道 Flot Charts 中是否有分组数据选项,我可以告诉它对每 15 分钟或 30 分钟的体积数据进行平均。

$.plot('#flot-vol, [{
    color: '#fff',
    bars: { show: true },
    data: dataV
}], {
    grid: { show: false },
    shadowSize: false
});

在 High Charts 中有一个 GroupData 选项,您可以在其中按天/周/月对给定数据进行分组。我想知道 Flot Charts 中是否有这样的功能?

如果我需要使用MySQL对数据进行分组,如果我有以下MySQL语句,如何每30分钟对数据进行分组?目前,我正在从名为 Ticker 的表中提取最新日期的所有卷。
SELECT UNIX_TIMESTAMP(`Timestamp`), `Volume` from `Ticker` WHERE CompID = 'symbol' AND Date(`Timestamp`) = (SELECT Max(Date(`Timestamp`)) FROM `Ticker`)

更新:

感谢 Ryley 澄清答案,以防有人想知道如何通过 MySQL 对数据进行分组,这里是。
有效的 MySQL 语句
SELECT UNIX_TIMESTAMP(`Timestamp`), AVG(`Volume`) FROM `Ticker` WHERE `CompID` = 'symbol' AND Date(`Timestamp`) = (SELECT Max(Date(`Timestamp`)) FROM `Ticker`) GROUP BY (UNIX_TIMESTAMP(`Timestamp`) DIV 30*60)

最佳答案

Flot 本身并不聚合数据,但您在考虑从 mysql 进行聚合时走在正确的轨道上。

使您的查询将数据平均为 30 分钟:

SELECT trunc(UNIX_TIMESTAMP(`Timestamp`)/(30*60))*(30*60) as time_chunk,
       AVG(`Volume`) from `Ticker`
WHERE CompID = 'symbol' AND
      Date(`Timestamp`) = (SELECT Max(Date(`Timestamp`)) FROM `Ticker`)
GROUP BY time_chunk

我不是 MySQL 用户,所以这可能不完全正确,但我的想法是获取时间戳并将其 chop 为 30 分钟的增量,然后在这 30 分钟内平均音量。

关于javascript - 使用浮图对数据进行分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16474808/

10-12 17:20
查看更多