CSV ファイルから階層オブジェクトを作成するために d3.nest() を使用しています。
次のコードが機能しない理由を教えてください。以下で説明するように、ループ内でネスト関数を使用することができませんでした。
d3 Web サイトの例から取得した次の CSV ファイルがあります。
"type1","type2","type3","type4","type5","size"
"flare","analytics","cluster","AgglomerativeCluster","","3938"
"flare","analytics","cluster","CommunityStructure","","3812"
"flare","analytics","cluster","MergeEdge","","743"
"flare","analytics","graph","BetweennessCentrality","","3534"
"flare","analytics","graph","LinkDistance","","5731"
この基本的なネスティングは次のように機能します。
data = data.entries(csv)
.key(function(d) {return d.type1; })
.key(function(d) {return d.type2; })
.key(function(d) {return d.type3; })
.entries(csv);
キーを動的に変更するために、値の配列を使用してキーを指定したいと考えています。
これは機能します:
var data = d3.nest();
var nesting = ["type1","type2","type3"];
data = data.key(function(d) {return d[nesting[0]]; });
data = data.key(function(d) {return d[nesting[1]]; });
data = data.key(function(d) {return d[nesting[2]]; });
data = data.entries(csv);
しかし、それはループでは機能しません...
var data = d3.nest();
for(var i=0;i<nesting.length;i++)
{
data = data.key(function(d) {return d[nesting[i]]; });
}
data = data.entries(csv);
ループバージョンが機能しない理由がわかりません... d3.nest() 機能について何か見逃しているのかもしれません...
また、このレベルで何も入力されていない場合にネスト レベルを「スキップ」する方法があるかどうかを知りたいです (つまり、上記の抽出からのすべての行の「type5」レベル)。どうすればそれができますか?
読んでくれてありがとう!