场景: 我正在使用 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/