数据分组 - 每月(月末)

时间:2013-05-16 19:54:57

标签: highcharts highstock

我正在努力让我的数据按月分组。我甚至已经编程方式过滤我的数据,只返回该月的最后一天并计算每月的价值。我试图在'dataGrouping'属性上找到一个很好的解释但是没有运气理解它也没有正确实现它。每个结果都会在每日间隔内返回我的系列。

我的问题如下:

  1. 数据分组是否需要最少数量的数据点 工作?
  2. dataGrouping.units下,我试图使用此功能 文档,但没有任何东西对我有用 - 仍然导致一个 每日间隔 - 有人可以帮我解释一下吗?
  3. 对此有任何帮助非常赞赏。

2 个答案:

答案 0 :(得分:8)

您使用HighStock图表吗?

如果是的话......

当然,需要大量数据才能进行分组。如果启用了数据分组选项,Highstock会自动处理每个分组模式之间的切换。因此,如果您没有大量数据,则无法使用默认设置

因此,如果要在默认情况下进行分组,则需要强制进行分组。

series:[{
    [...]
        dataGrouping: {
            approximation: "sum",
            enabled: true,
            forced: true,
            units: [['month',[1]]]

        }
}]

修改

这是一个工作示例演示(基本highstock演示的分支) http://jsfiddle.net/NcNvu/

希望它有所帮助! 问候

答案 1 :(得分:1)

我们尝试了围绕此问题,我们使用Highstock' s(Splinechart)RangeSelector,事件和DataGrouping。点击每周rangeselectorButton,我们通过setExtremes捕获此事件。发布事件后,将其近似为" sum"。如果您使用两个系列而不是迭代该对象。目前每周进行一次只需使用相应的UNIT将其延长为每月

  events: {
         setExtremes: function (e) {
             if (e.rangeSelectorButton != undefined) {
                 var triger = e.rangeSelectorButton;
                 if (triger.type == 'week') {
                     $.each(this.series, function (index, obj) {
                         obj.options.dataGrouping.units[0] = ['week', [1]];
                     });
                 } else if (triger.type == 'day') {
                     $.each(this.series, function (index, obj) {
                         obj.options.dataGrouping.units[0] = ['day', [1]];
                     });
                 }
             }
         }
     },