2011-05-11 12 views

Odpowiedz

16

Możesz kontrolować algorytm Fruchtermana-Reingolda za pomocą funkcji layout.fruchterman.reingold. patrz: help('layout.fruchterman.reingold'). A konfiguracja, które często używam i dostaje trochę więcej odstępu jest:

l <- layout.fruchterman.reingold(g,niter=500,area=vcount(g)^2.3,repulserad=vcount(g)^2.8) 
plot(g,layout=l) 

gdzie g to Twój obiekt wykresu. Najlepiej przetestować różne wartości tych parametrów dla wykresu i zobaczyć, co działa. Zwłaszcza repulserad wpływa na odstępy w wykresie. Wartością domyślną jest kwadrat liczby węzłów, więc wyższe wartości powinny zapewnić więcej odstępów między wykresami.

+10

"Argument" repulserad "jest przestarzały i nie ma żadnego efektu", przynajmniej w wersji 1.0.1. . – WAF

7

Jeśli algorytm layout.fruchterman.reingold nadal nie daje tego, czego potrzebujesz, zmieniając parametry, wykonaj następujące czynności. Każdy układ zwraca zestaw współrzędnych, z współrzędnymi x i y odpowiednio w pierwszej i drugiej kolumnie. Można zastosować dowolną transformację chcesz tutaj, a jeśli po prostu chcesz, aby ją skalować, wystarczy użyć

L = layout.fruchterman.reingold(G)*s; #Scaling factor s 

bardziej wymyślne przekształcenia są oczywiście również możliwe. Tylko dla zapisu, możesz również edytować układ ręcznie za pomocą myszy, używając tkplot(G, layout=L). Możesz uzyskać współrzędne z powrotem przez L = tkplot.getcoords(1).

+2

skalowanie przez stałą nie ma żadnego efektu, chyba że parametr 'rescale = FALSE' zostanie przypisany do funkcji' igraph :: plot' – deeenes