2012-03-15 11 views
6

Próbuję rozmieścić moje węzły w formie drzewa. Na razie pracuję nad tym przykładem od here. Obecnie polegam na układzie ukierunkowanym na siłę, ale próbuję go zmodyfikować w taki sposób, że mogę uzyskać drzewo o ustalonej liczbie poziomów, tj. Jeśli węzeł należy do konkretnej "warstwy", powinien należeć do tego samego obszaru, co inne węzły w warstwa.Jak skonstruować drzewo przy użyciu d3 i jego układu sił?

Próbowałem wyjaśnić więcej na poniższym obrazku, ale czy ktoś ma jakieś sugestie na ten temat? Czy są jakieś predefiniowane algorytmy wewnątrz d3, które to robią lub mogą być modyfikowane, aby to osiągnąć?

enter image description here

+0

Źródło zawiera przykład drzewa dynamicznego. Powinieneś rzucić okiem na to, może być to, czego chcesz (przynajmniej wygląda podobnie). * edit: * Mam na myśli [ten przykład] (https://github.com/mbostock/d3/blob/master/examples/tree/tree-dynamic.html). –

+1

Czy istnieje powód, dla którego używasz układu ukierunkowanego na siłę zamiast statycznego układu drzewa, np. http://bl.ocks.org/1061834? – nrabinowitz

+0

@nrabinowitz: +1 Dziękuję. Nie mogę uwierzyć, że to przegapiłem! Sądzę, że oba będą służyć mojemu celowi! Czy istnieje sposób, w jaki mogę uczynić je interaktywnymi, tak aby węzły po prostu wróciły, kiedy je gdzieś przeciągnę? Pomaga to przeciągnąć jakiś węzeł i wyjaśnić go komuś. – Legend

Odpowiedz

10

Twój schemat wygląda prawie identyczne this example który wykorzystuje siłę grawitacji w oparciu o niestandardowe głębokości. Jest another example za pomocą siły niestandardowej, która przyciąga do węzła nadrzędnego. Oba są z my talk na układach siłowych.

Oczywiście, układy sił są tylko jedną opcją - a jak @nrabinowitz powiedział, że jest ich o wiele więcej hierarchy layouts. W rozmowie Open SVG można znaleźć moreinteractivehierarchyexamples.

+1

Naprawdę jesteś legendą! Dziękuję bardzo za poświęcenie czasu, aby pokazać mi wszystkie przykłady. A tak przy okazji, bardzo pouczająca rozmowa. – Legend