Graphviz, Änderung der Kantengröße


90

Wie ändere ich die Größe der Kante im Punkt (graphviz)? Ich möchte einige Kanten "fett" machen.

Antworten:


132

Ich wollte Shuvalovs Antwort ergänzen. Die Stiftbreite ist in der Tat der richtige Befehl. Zusätzlich Antwort in Schuwalows stiftbreite ist sowohl ein Knoten und eine Kante Eigenschaft - auch korrekt.

Die Unterscheidung, die ich machen wollte:

  • Die Penwidth wirkt sich bei Verwendung als Knoteneigenschaft (z. B. "NodeA" [penwidth = 5]) auf die Grenzliniengewichtung für diesen Knoten aus

  • stiftbreite , wenn sie als eine Kante Eigenschaft verwendet , um die Linienstärke des Randes wirkt (Standardwert „1“ ist , Spezifizierungsstiftbreite = 2 wird der Rand in erscheinen fett Typ

  • Wenn Sie die Linienstärke einer Kante ändern möchten , müssen Sie die Stiftbreite für die beiden durch diese Kante verbundenen Knoten nicht ändern (wie die Antwort von shuvalev möglicherweise nahe legt).

  • für einen gerichteten Graphen (die Kanten haben eine Richtung) Sie könnte auch die Größe / das Gewicht der zu ändernden Pfeilspitze und arrowtail , zusammen mit dem Kantengewicht , so dass alle drei bleiben proportional

  • Die Länge einer Kante kann durch Festlegen der Eigenschaft weight geändert werden. An anderer Stelle beträgt der Standardwert 1,0. Das Erhöhen dieses Werts erhöht die Kosten für das Strecken dieser Kante während des Renderns (dh der Zeichenalgorithmus wendet eine höhere Strafe auf Lösungen an, bei denen diese Kante länger ist). Beachten Sie, dass die Kante von 1 bis 4 kürzer ist als die Kante von 1 bis 2.

Der folgende Code sollte dies alles veranschaulichen. Das gerenderte Diagramm wird unter dem Code angezeigt.

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.]
}

Geben Sie hier die Bildbeschreibung ein


Aus irgendeinem Grund weightändert die Eigenschaft nichts für mich. Der Rest ist aber super hilfreich ... danke!
Clozach

Dies war sehr hilfreich, insbesondere beim Bild - hat mir geholfen, die Beziehung hier zu verstehen. Die Graphviz-Syntax ist etwas eigenartig, so dass so schöne Bilder wirklich sehr geholfen haben. Der einzige Teil, wenn ich das oben Gesagte ändern würde, wäre, ein bisschen mehr Erklärung in Bezug auf die Stiftbreite hinzuzufügen, da im Moment alle Linien fett sind (das habe ich dank des oben Gesagten geändert), aber der Rand um Die einzelnen Knoten sind nicht dicker, was ich ursprünglich tun wollte. Möglicherweise kann ich dieses Problem irgendwann lösen, aber falls ich vergesse, die Lösung hier zu veröffentlichen, füge ich stattdessen einfach dies hinzu. :)
Shevy

20

Versuche dies:

"NodeA" [ penwidth = 5]
"NodeB" [ penwidth = 5]
NodeA->NodeB [ penwidth = 3]
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.