2013-05-16 13 views
5

データを月単位でグループ化するのは非常に困難です。私はプログラムを使ってデータをフィルタリングして、月の最後の日に戻って月ごとの値を計算することさえできました。私は 'dataGrouping'プロパティについての良い説明を見つけようとしましたが、それを理解していない、またはそれを正しく実装していません。すべての結果は1日の間隔で私のシリーズを返します。次のようにデータのグループ化 - 月末(月末)

私の質問は以下のとおりです。

  1. は 仕事にグループ化したデータに必要なデータポイントの最小数はありますか?
  2. のドキュメントを使用しようとしましたが、何も私のために働いていませんでした - まだ の1日の間隔があります - 誰かが私にこのことを説明できますか?

これに関する助けはGREATLYとなります。

答えて

8

HighStockグラフを使用していますか?

確かに...そうなら、それはグループ化を取得するために大量のデータを取ります。データグループ化オプションが有効になっている場合、Highstockは各グループ化モード間の切り替えを自動的に処理します。したがって、多くのデータがない場合、デフォルト設定では機能しません。

したがって、デフォルトでグループ化する場合は、グループ化を強制する必要があります。

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

     } 
}] 

EDITここ

は、実施例のデモ(基本highstockデモのフォーク)

http://jsfiddle.net/NcNvu/はそれが役に立てば幸いです! よろしくお願いいたします。

+0

私は次のように仮定しています:[['month'、[1]]ここで、1はグループ化する月数ですか? – Scott

+0

@Scottはい、これを見てください:http://api.highcharts.com/highstock#plotOptions.series.dataGrouping.units –

+0

いただきありがとうございます。好奇心の念から、データグルーピングが動作するために必要な最低限のデータポイントを知っているのは誰ですか? – Scott

1

Highstock's(Splinechart)RangeSelector、イベント番号DataGroupingを使用してハックを試しました。毎週のrangeselectorButtonをクリックすると、このイベントがsetExtremesで捕捉されます。イベントを捕捉したポストは、それを「合計」に近似します。 2つのシリーズを使用している場合は、オブジェクトを反復処理します。現在、週単位で月単位で月単位で延長しています。

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]]; 
        }); 
       } 
      } 
     } 
    }, 
関連する問題