chciałbym (rodzaj) łączą Hierarchical Edge Bundling i tym Radial Reingold–Tilford Treed3.js łączące hierarchiczny krawędzi wiązania i Radial Reingold-Tilford Drzewo + danych
To będzie wyglądać trochę tak (przepraszam mój straszny paint.net umiejętności) *:
* dzieci powinny znajdować się w łuku, jak na Drzewie.
mam setup to skrzypce, które pokazuje prostych danych w Liście do Hebrajczyków: https://fiddle.jshell.net/d1766z4r/2/
już połączył dwa rodzaje danych (w komentarzach na początku, który zastąpi obecne zmienna „klas”):
var classes = [
{"name":"test.cluster1.item1","children": [
{"name": "test.cluster1.item4","imports":["test.cluster1.item2","test.cluster1.item3"]},
{"name": "test.cluster1.item5"}
]},
{"name":"test.cluster1.item2","imports":["test.cluster1.item3"]},
{"name":"test.cluster1.item3"}
];
Jeśli istnieje lepszy sposób łączenia danych, możesz je odpowiednio zmienić.
Inne niż zmiana danych, nie jestem pewien, jak postępować, ponieważ jestem d3.js i początkujący javascript, szczególnie, gdy dojdzie do łączenia odpowiedniego podelementu (pozycja 4), ale nie do drugiego (poz. 5). Zastanowię się jednak nad odpowiedzią, która wskaże link do wszystkich dzieci pozycji 1 jako sposób na rozpoczęcie tego procesu.
Zaktualizuj to skrzypce lub utwórz nowe, jeśli to możliwe, aby cofnąć swój kod. Wszelkie rady dotyczące sposobu postępowania są oczywiście mile widziane.
Następnym krokiem będzie sprawienie, aby te dzieci pokazywały lub chowały się po kliknięciu, używając metody podobnej do Collapsible Tree (proszę o radę, ale prawdopodobnie będzie to nowe pytanie później, jeśli nie mogę dowiedzieć się, jak to zrobić), ponieważ będę musiał pracować z dużą ilością danych, uzasadniając przede wszystkim dzieci.
Wreszcie, każde dziecko może mieć własne dzieci, ale na razie wystarczy jedna linia dzieci. Dojdę do tego później, jak sądzę.
AKTUALIZACJA: Odpowiedzi nie muszą być kompletnymi rozwiązaniami, co nieco (zobacz co tam zrobiłem?) Pomaga!