2013-05-16 141 views
5

我正在嘗試通過月份將數據分組。我甚至用編程的方式來篩選我的數據,只返回一個月的最後一天並計算每月的價值。我試圖找到'dataGrouping'屬性的一個很好的解釋,但沒有理解它,也沒有正確地實現它。每個結果都會以每天的間隔返回我的系列。數據分組 - 每月(月末)

我的問題如下:

  1. 有需要的數據分組到 工作數據點的最低數量?
  2. dataGrouping.units下我試過使用這個 文檔,但沒有爲我工作 - 仍然在 每天的時間間隔 - 有人可以爲我解釋這個嗎?

對此的任何幫助將是GREATLY讚賞。

回答

8

您是否在使用HighStock圖表?

如果是...

當然,分組需要很多數據。如果啓用數據分組選項,Highstock會自動處理每個分組模式之間的切換。所以如果你沒有很多數據,它將不能用默認設置

所以,如果你想默認分組,你需要強制分組。

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

     } 
}] 

編輯

這裏是一個工作示例演示(基本highstock演示叉) http://jsfiddle.net/NcNvu/

希望它能幫助! Regards

+0

我假設只是其擴展爲每月:單位:[[「月」,[1]其中1等於個月組的數量? – Scott

+0

@Scott是的,看看這個:http://api.highcharts.com/highstock#plotOptions.series.dataGrouping.units –

+0

謝謝你的迴應。出於好奇,是否有人會知道數據分組工作所需的最小數據點數? – Scott

1

我們嘗試了一個Hack,在這裏我們使用了Highstock的(樣條曲線圖)RangeSelector,Event和DataGrouping。點擊每週rangeselectorButton,我們通過setExtremes捕獲此事件。發佈事件後將其近似爲「總和」。如果您使用兩個序列而不是迭代對象。目前做每週使用相應的單位

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]]; 
        }); 
       } 
      } 
     } 
    },