Ich habe ein Diagramm, das ich grafviz für Layout und Visualisierung für mich möchte. Der Graph hat 122 Kanten und 123 Knoten. Die Kanten sind von 4 verschiedenen Arten und ich möchte, dass sie visuell unterscheidbar sind. Ich habe mich noch nicht entschieden, was der beste Weg wäre, aber ich würde gerne mit den Wählscheiben spielen. Leider sehe ich nichts wie ein Attribut "Klasse" oder "Stylesheet" für Kanten. Ich kann visuelle Attribute nur für jede Kante einzeln setzen (viele Wiederholungen). Vielleicht habe ich etwas verpasst? Gibt es vielleicht eine Möglichkeit, Kanten zu 4 verschiedenen Gruppen hinzuzufügen und dann die Gruppen zu stylen, nicht jede Kante einzeln?Graphviz: Wie weisen Sie einer Gruppe von Kanten den gleichen Stil zu?
Antwort
Kanten stylen (oder Knoten) von Gruppe nicht einzeln, verwenden Subgraphen.
wie so:
digraph G {
node [style=filled,color="#5D8AA8", fillcolor="#5D8AA8"];
subgraph c1 {
edge [color="#004225", arrowsize="0.6", penwidth="1"];
"node 1" -> "node 3";
"node 5" -> "node 7";
"node 1" -> "node 2";
label = "";
}
subgraph c2 {
edge [color="#FBEC5D", arrowsize="1.2", penwidth="3"];
"node 2" -> "node 4";
"node 4" -> "node 6";
"node 3" -> "node 5";
"node 6" -> "node 8";
label = "";
}
begin -> "node 1";
start -> "node 2";
"node 1" -> "node 4"
"node 2" -> "node 6";
start [shape=diamond];}
Also, wenn Sie den Code setzen oben in einer Datei w/a ".dot" Erweiterung; Rendern Sie es dann in graphviz, Sie sehen drei verschiedene Arten von Kanten, Aussehen-weise.
Ein Typ ist der Standard (Farbe = schwarz, Dicke = 1 usw.) - d. H., Diese Kanten sind keinem Untergraphen zugeordnet.
Die anderen beiden Arten von Kanten (eine dünne, dunkelgrüne Gruppe und eine dicke, hellgelbe Gruppe) werden basierend auf der Zuordnung zu einem von zwei Untergraphenclustern entworfen.
Subgraph oft visuell highlight ein Knoten-Cluster verwendet (das heißt, eine bestimmte zusammenhängende ‚Gruppe‘ von Knoten, von dem Rest der Knoten in dem Graphen zu unterscheiden); Es gibt jedoch keine Voraussetzung (wie Sie an meinem Beispiel sehen können), dass die Kanten, die Sie durch Zuweisung zu einem bestimmten Untergraphen stylen, zu einer zusammenhängenden "Gruppe" von Knoten gehören - Sie können beliebige Kanten für die Zuweisung festlegen eine bestimmte Untergraphen.)
mir, Styling Knoten, die durch Gruppe ist auf die HTML-Praxis, eine Klasse zu definieren und zuweisen es zu einer Sammlung von div-Tags in HTML-Markup
analog Während @ Dougs Antwort korrekt ist (verwenden Subgraphen auf ähnliche Art zu Gruppen von Objekten zuweisen), glaube ich, mein Beispiel ist besser:
digraph G {
compound=true;
subgraph columns {
c0r0 -> c0r1;
c0r1 -> c0r2;
c1r0 -> c1r1;
c1r1 -> c1r2;
c2r0 -> c2r1;
c2r1 -> c2r2;
}
subgraph rows {
edge [color=red, constraint=false];
c0r0 -> c1r0;
c1r0 -> c2r0;
c0r1 -> c1r1;
c1r1 -> c2r1;
c0r2 -> c1r2;
c1r2 -> c2r2;
}
}
cat square-digraph.dot | dot -Tsvg -o square-digraph.svg
Perfekt, einfach perfekt. – Pacerier
Warum ist es besser? Nicht um dich zu kritisieren. Ich kenne Graphviz nicht genug, um zu verstehen, wie es besser ist und ich bin daran interessiert, es herauszufinden. –
Ich mag einfach das resultierende Diagramm. Das Prinzip der Lösung ist nicht anders. – bukzor
Wie können wir den Standardstil für Subgraphen eingestellt? – Pacerier
Es sind keine Untergraphen erforderlich. Alle Kanten, die unterhalb einer Kantenstildeklaration mit "edge [color = ... etc]" definiert sind, verwenden diesen Stil. – Bousch