2014-04-23 24 views
5

Mam wbudowany wykres ukierunkowany na siłę do analizy sieci społecznościowej.Zapobiegaj nakładaniu się węzłów na wymuszonym wykresie graficznym

Problem, który mam jest to, że węzły obliczu ciągle zachodzą na siebie,

Jak mogę zapobiec nakładanie węźle siły skierowane wykresu?

Oto moja code with dummy data

A Poniżej znajduje się obraz mojej siły skierowane wykres

enter image description here

enter image description here

Jak mogę usunąć nakładanie tych węzłów? i jak mogę zachować co najmniej pewien odstęp między linkami, aby linki były dobrze widoczne?

+2

Wykrywanie kolizji? http://bl.ocks.org/mbostock/3231298 – Josh

+0

@Josh Wstawiłem 'var q = d3.geom.quadtree (graph.nodes), i = 0, n = nodes.length; podczas gdy (++ i analyticalpicasso

+1

Można również po prostu zwiększyć parametr "ładunek" w układzie sił i być może uczynić go funkcją typu węzła (tak, aby większe ikony przepychały się wzajemnie bardziej niż te mniejsze). Jednak biorąc pod uwagę liczbę linków, które prawdopodobnie masz nadal zachodzi nakładających się linii. – AmeliaBR

Odpowiedz

8

Istnieją dwie metody unikania nakładania się w układzie sił d3.

Pierwsza polega na dostosowaniu parametrów urządzenia force object, z których najważniejszym jest parametr "ładowanie". Węzły z ujemnymi wartościami "ładunku" wypychają inne węzły (w porównaniu z węzłami o wartościach dodatnich zbliżają inne węzły) i można zwiększyć ładunek, aby spowodować większy nacisk.

Domyślną wartością "opłaty" jest -30, a więc możesz ją regulować, aż uzyskasz żądany efekt. Nie ma prostej formuły określającej żądaną wartość, ponieważ zależy ona również od innych parametrów i ilości linków na wykresie.

Jeśli z jakiegokolwiek powodu dostosowanie ładunku nie działa (na przykład, jeśli węzły mają być blisko siebie - nie odpychać się nawzajem - ale nadal nie zachodzą na siebie), można ręcznie sprawdź nakładające się węzły, tak jak w this Mike Bostock example zasugerowane przez Josha w komentarzach.

+0

Kolejny (mniej oczywisty), w którym unika się nakładania, to https://bl.ocks.org/mbostock/1062383 – Fuhrmanator