私は棒グラフを生成するためにd3を使用しています。私は、2015年の各日のデータを含む4つの列を持つCSVデータをいくつか持っています。d3 .csvデータが多い1か月だけを描画
- 日
- バー1
- バー2
- ライン
私が達成したい事は、それはバー1とバー2のためにわずか12小節を表し、追加することですそれらの上にライン(私はそれを行う方法を知っている)。
誰かが、データを変更せずに毎月ではなく、月の初めにバーを表示する方法を教えてもらえますか?
私は棒グラフを生成するためにd3を使用しています。私は、2015年の各日のデータを含む4つの列を持つCSVデータをいくつか持っています。d3 .csvデータが多い1か月だけを描画
私が達成したい事は、それはバー1とバー2のためにわずか12小節を表し、追加することですそれらの上にライン(私はそれを行う方法を知っている)。
誰かが、データを変更せずに毎月ではなく、月の初めにバーを表示する方法を教えてもらえますか?
nest
フィーチャーd3
が役に立ちます。テーブルの各エントリ(ここではキーは月)にキーを与え、同じキーを持つエントリの束ごとに関数を実行します(ここでは、Bar AとBar Bの平均を取る)。これによりテーブルkey -> value
が得られます。
私はこの時点で
あなたの日付が標準の文字列 "YYYY-MM-DD" として表現されvar monthdata = d3.nest()
.key(function(d) {
//get month from data (first 7 characters):
return d.date.substring(0,7);})
.rollup(function(d) {
//run this function where d is a set of entries with same month
return {
bar1: d3.sum(d, function(g) {return g.bar1; })/d.length, //average of bar1
bar2: d3.sum(d, function(g) {return g.bar2; })/d.length //average of bar2
}
})
.entries(csv_data);
を仮定している、monthdata
は次の形式持っている必要があります。
[{ key: "2015-01", values: {bar1: 123.4, bar2: 32.10} },
{ key: "2015-02", values: {bar1: 1234, bar2: 132.10} },
.. ]
を.. d3棒グラフにプラグインする準備ができています。
[ボーナス]ネスティング機能をテストするための非常に良いリンク:http://bl.ocks.org/shancarter/raw/4748131/ – tarulen
月の平均を1バーで表示しますか?または平均、中央値? – murli2308
月平均、yes – Hiero