The docs d3のスタッキング関数d3.stack
は、オブジェクトの配列を持つ例を示しています(各jsonオブジェクトは、x軸が何を測定していてもポイントのアンサンブルを表します)。例:d3のマトリックスをjsonに再マッピングせずにスタックする
var data = [
{month: new Date(2015, 0, 1), apples: 3840, bananas: 1920, cherries: 960},
{month: new Date(2015, 1, 1), apples: 1600, bananas: 1440, cherries: 720}
]
私は、データ系列([ [], [], [], etc ]
)の行列で積み重ねられたヒストグラムを生成しようとしています。
for(let i=0; i<data.length; i++){
bins[i] = d3.histogram()
.domain(x.domain())
.thresholds(x.ticks(10))
(data[i]);
}
そして、別のループ内の各データ系列のグループを作成します:
let bars = this.svg.selectAll(".series" + i)
.data(this.bins[i])
.enter().append("g")
.classed("series" + i, true)
これは、行を反復処理し、(Xスケールや他の場所でドメインを事前に定義された)ヒストグラムのビンのシリーズを取得するのに十分に簡単です
もちろん、私はここにこだわっているようにそれをやっている。どのように私はbars.append("rect")
に、特定のシリーズの正しいx、y座標でどうするのですか? JSONのキー、値のペアにすべてのデータをいじることなく、stack
を起動する方法はあり
[
[[1,2,3,3], [5,8,9], [10], ... etc], //series0 grouping by bins of 5
[[1,3], [7,7,9,9], [11], ... etc], //series1
[[2,3,3], [8,9], [10,12], ... etc], //series2
...etc
]
:別の言い方をすれば、私のようなものを探して、現時点でbins
の本当に便利な配列を持っていますか?