Graphviz, zmieniając rozmiar krawędzi

92

Jak zmienić rozmiar krawędzi w kropce (graphviz)? Chciałbym, aby niektóre krawędzie były „pogrubione”.

Nazwa
źródło

Odpowiedzi:

134

Chciałem uzupełnić odpowiedź Shuvalova. penwidth jest rzeczywiście właściwym poleceniem. Dodatkowo, w odpowiedzi Shuvalova szerokość pióra to jedno i drugie węzłem, jak i właściwością krawędzi - również poprawna.

Rozróżnienie, które chciałem dokonać:

  • przepustowość , gdy jest używana jako właściwość węzła (np. „WęzełA” [szerokość przepustowości = 5]) wpływa na szerokość linii granicznej dla tego węzła

  • penwidth , stosowany jako właściwość krawędzi wpływa na grubość linii krawędzi (domyślna wartość „1”, określającą penwidth = 2 będzie krawędź pojawiają się pogrubienie Typ

  • jeśli chcesz zmienić grubość linii krawędzi, nie musisz zmieniać szerokości pióra dla dwóch węzłów połączonych tą krawędzią (jak może sugerować odpowiedź Shuvaleva)

  • na skierowanej wykresie (krawędzie mają kierunek) można również potrzeba zmiany rozmiaru / ciężar grotu i arrowtail wraz z obciążnikiem , tak, że wszystkie trzy pozostają proporcjonalna

  • długości od krawędzi może być zmieniany przez ustawienie wagi własności, jak i gdzie indziej, domyślna wartość wynosi 1,0; zwiększenie tej wartości zwiększa koszt rozciągania tej krawędzi podczas renderowania (tj. algorytm rysujący nakłada większą karę na rozwiązania, w których ta krawędź jest dłuższa); Zauważ, że krawędź od 1 do 4 jest krótsza niż krawędź od 1 do 2.

Poniższy kod powinien to wszystko zilustrować. Wyrenderowany wykres jest pokazany poniżej kodu.

digraph {
    /* declare the node & style them */
    "Node 1" [shape=diamond, penwidth=3, style=filled, fillcolor="#FCD975"];
    "Node 2" [style=filled,fillcolor="#9ACEEB" ];
    "Node 3" [shape=diamond, style=filled, fillcolor="#FCD975" ];
    "Node 4" [style=filled, fillcolor="#9ACEEB" ]

    /* declare the edges & style them */
    "Node 1" -> "Node 2" [dir=none, weight=1, penwidth=3] ;
    "Node 1" -> "Node 3" [dir=none, color="#9ACEEB"] ;
    "Node 1" -> "Node 4" [arrowsize=.5, weight=2.]
}

wprowadź opis obrazu tutaj

Doug
źródło
Z jakiegoś powodu weightnieruchomość niczego dla mnie nie zmienia. Reszta jest jednak super pomocna… dzięki!
clozach
Było to bardzo pomocne, szczególnie w przypadku obrazu - pomogło mi zrozumieć związek tutaj. Składnia graphviz jest trochę dziwna, więc takie ładne obrazy naprawdę bardzo pomogły. Jedyną częścią, jeśli bym to zmienił w powyższym, byłoby dodanie nieco więcej wyjaśnienia w odniesieniu do szerokości pisaka, ponieważ w tej chwili wszystkie linie są pogrubione (zmieniłem to dzięki powyższemu), ale obwódka wokół poszczególne węzły nie są grubsze, co początkowo chciałem zrobić. Być może w końcu uda mi się rozwiązać ten problem, ale w przypadku, gdy zapomnę opublikować tutaj rozwiązanie, po prostu dodaję to. :)
shevy
20

Spróbuj tego:

"NodeA" [ penwidth = 5]
"NodeB" [ penwidth = 5]
NodeA->NodeB [ penwidth = 3]
shuvalov
źródło