d3 zagnieżdżanie na kilku klawiszach za pomocą pętli
Używam d3.nest () w celu utworzenia obiektu hierarchicznego z pliku CSV.
Czy mógłbyś mi pomóc zrozumieć, dlaczego poniższy kod nie działa. Nie udało mi się użyć funkcji zagnieżdżania w pętli, jak opisano poniżej.
Mam następujący plik CSV, zaczerpnięty z przykładów na stronie 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"
To podstawowe zagnieżdżanie działa:
data = data.entries(csv)
.key(function(d) {return d.type1; })
.key(function(d) {return d.type2; })
.key(function(d) {return d.type3; })
.entries(csv);
Chcę użyć tablicy wartości, aby określić moje klucze w celu ich dynamicznej modyfikacji.
To działa:
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);
Ale to nie działa z pętlą ...
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);
Nie rozumiem, dlaczego wersja pętli nie działa ... Może brakuje mi czegoś o możliwościach d3.nest () ...
Chciałbym również wiedzieć, czy istnieje sposób „pomijania” poziomu zagnieżdżenia, jeśli na tym poziomie nie ma nic wypełnionego (tj. Poziom „type5” na wszystkich liniach z powyższego wyciągu). Jak mogłem to zrobić?
Wielkie dzięki za czytanie!