使用Flot图表对数据进行分组

3

场景:我正在使用Flot JS绘制一个音量条形图,其中包含每分钟的数据。例如,对于3小时,我从数据库中获取了3 x 60个数据点。

问题:由于我有6小时的数据点,而图表的宽度仅为250px,每个条形的宽度仅为1px,没有边距。我想知道在Flot Charts中是否有分组数据选项,可以告诉它平均每15分钟或30分钟的音量数据。

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

在Highcharts中,有一个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)
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分钟内平均音量。


谢谢你澄清了这个问题!至于MySQL语法,我在另一个链接中找到了一个类似的问题:https://dev59.com/GG855IYBdhLWcg3wbz1l我会编辑我的帖子,说明对我有用的内容 :) - Rachelle Uy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接