我使用d3.nest()爲了從CSV文件中創建一個分層對象。d3嵌套在幾個鍵與循環
請你幫我理解爲什麼下面的代碼不起作用。 我沒有設法在循環中使用嵌套函數,如下所述。
我有以下的CSV文件,從例子中的D3網站採取:
"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」在額外的所有線上ct以上)。我怎麼能這樣做?
非常感謝您的閱讀!
喜規範的地方。非常感謝您的回答。現在非常清楚! – bobby
@nrabinowitz @nabinowitz不應該把葉節點當作'key:something,values:number'來代替,當我們的葉節點(結尾的節點)有你的代碼時,它有'key:something,values:[]'!它有一個數組而不是數值!任何想法如何讓'價值'成爲數字? – Ciwan
如果我需要根據組來確定級別,該怎麼辦?假設我有兩個關鍵組,而我應該如何知道這個關卡是基於這個值呢?不知何故,我可以添加attr,我用attkey等關鍵屬性組? –