2010-02-24 15 views
20
digraph G { 
    a -> b [ label = "foo" ]; 
    a -> b [ label = "bar" ]; 
} 

Dadurch werden zwei Kanten zwischen den Knoten 'a' und 'b' erstellt. Gibt es eine Möglichkeit, nur eine Kante zu haben (sie zu gruppieren)?GraphViz, Gruppieren derselben Kanten

+1

Möchten Sie eine Kante mit zwei Etiketten? Mit anderen Worten, was willst du, das wäre anders als nur eine Aussage zu haben, die eine Kante zwischen a und b spezifiziert? – datageist

+0

Ich frage mich, ob es eine Möglichkeit gibt, die Kante dicker zu machen, wenn es mehr Duplikate davon gibt. – Geremia

Antwort

7

Ich denke, es hängt wirklich davon ab, was Ihre gewünschte Ausgabe wäre. Eine Möglichkeit ist:

digraph G { 
    graph [ splines = false ] 
    a -> b [ label = "foo" ]; 
    a -> b [ label = "bar" ]; 
} 

Wo nicht Splines zieht Kanten mit geraden Liniensegmenten und so doppelte Kanten werden nicht visuell unterscheiden.

Was würde in Ihrer idealen Ausgabe die einzelne Kante aussehen, da es zwei verschiedene Etiketten dafür geben soll?

+0

Thx für die Antwort. Es wird wirklich visuell nicht unterschieden. Mit Labels möchte ich sie verketten. Ich werde wohl wieder die Datei mit Änderungen schreiben müssen. – name

+2

Sie haben Recht. Ihr Ziel geht über die Knoten-/Kantenverarbeitungsfunktionen von graphviz hinaus und erfordert eine Art Vorverarbeitung, um Duplikate in das von Ihnen gesuchte Formular einzufügen. Bei kleineren Graphen wie dem Beispiel können Sie es natürlich mit der Option Splines fälschen. – RTBarnard

40

Das Stichwort "strict" kann Ihnen helfen.

strict digraph G { 
    a -> b [ label = "foo" ]; 
    a -> b [ label = "bar" ]; 
} 

Dies wird die Kanten kombinieren. Aber ich glaube, dass es nur das erste Etikett anwenden wird.

+1

Mist. Dies wäre perfekt, wenn es nur das letzte Etikett anwenden würde ... –

+2

Vertauschen Sie einfach die Deklarationsreihenfolge ... –