3

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

在高图表中有一个 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)
4

1 回答 1

2

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 用户,所以这可能不完全正确,但我们的想法是获取您的时间戳并将其截断为 30 分钟增量,然后在 30 分钟内平均音量。

于 2013-05-10T15:27:31.177 回答