2017-12-21 28 views
1

Ich habe nach einer Lösung gesucht, aber ich finde nicht, dass ich eine finde, die ein Edge Label mit einem anderen GraphViz Dot Graph verbindet. wenn ich zum Beispiel ein Diagramm namens ‚mydotimage2.svg‘ erzeugt aus den folgenden:GraphViz - Link Edge Label zu einem anderen Dot Graph

digraph G 
{ 
    graph [compound = true]; 

    subgraph cluster_0 
    { 
     node [style = bold]; 
     "A" "B" "C"; 
    } 

    subgraph cluster_1 
    { 
     node [style = bold]; 
     "One" "Two" "Three"; 
    } 

    "A" -> "One" [lhead = cluster_1, ltail = cluster_0, label = "Falafel", href = "~/workspace/GraphViz/mydotimage1.svg"] 
} 

Wenn ich die ‚mydotimage2.svg‘ SVG-Bild in meinem Terminal erstellen über:

dot -T svg mydotimage2.dot > mydotimage2.svg 

Die Das Bild lässt sich in meinem Browser gut öffnen, und die Kantenbeschriftung von A nach Eins im erzeugten Bild ist anklickbar, aber es öffnet sich nicht mydotimage1.svg, das sich ebenfalls im selben GraphViz-Verzeichnis befindet. Weiß jemand, wie man das macht? Ich würde das wirklich zu schätzen wissen. Danke im Voraus.

Antwort

1

Sie sollten relative Pfade verwenden. Das heißt, anstelle von href = "~/workspace/GraphViz/mydotimage1.svg" verwenden href = "./mydotimage1.svg"

BTW, anstelle Rohr Umleitung des Verwendens (>) Sie kann als Parameter an die dot gewünschten Ausgabedateinamen angeben.
Fügen Sie einfach -omydotimage2.svg an die Befehlszeile an. Dabei ist "mydotimage2.svg" der Dateiname, in den Sie schreiben möchten.

+0

Danke! Lief wie am Schnürchen. Und danke, ich habe mit GraphViz angefangen, indem ich "dot -T svg -O.svg" gemacht habe, aber ich habe Python-Skripte geschrieben, um die Dot-Code- und SVG-Bilder zu erzeugen, und mich an die Umleitung gewöhnt. Ist es schädlich, so zu handeln? – CBK

+0

Denken Sie nicht, dass es Probleme mit Pipe-Umleitungen geben wird, wenn Sie es lieber verwenden. Nur darauf hingewiesen, falls Sie diesen Schlüssel übersehen haben. – user882813

1

Dies ist, was ich auf meiner Maschine beobachten, ich denke, es ist ein generelles Problem:

graphviz die Tilde ~ nicht erweitern, aber es die Tilde nicht entbindet. In meinem Fall sehe ich /home/rainer/~/workspace/GraphViz/mydotimage1.svg als Bildstandort, wenn ich auf den Hyperlink in der Grafik klicke. Das gibt es offensichtlich nicht. Sieht aus wie ein Bug zu mir ...

Die Lösung/Abhilfe ist, die ~ im Skript mit Ihrem Home-Ordner Pfad, in meinem Fall

href = "/home/rainer/workspace/GraphViz/mydotimage1.svg" 

, die funktionieren wie erwartet zu ersetzen.

+0

Vielen Dank! Diese Methode funktionierte ebenfalls und ist wahrscheinlich gut zu wissen, damit sich die Bilder nicht im selben Ordner befinden müssen, um sich gegenseitig zu öffnen. – CBK

+0

Ja beide absolute Pfad (wie mein Vorschlag) und relativen Pfad (wie @ user882813) arbeiten, es ist nur die '~', die fehlerhaft ist. Und: Es kann sich je nach Betriebssystem unterscheiden, aber für die Ausgabedatei müssen Sie ein Kleinbuchstabe verwenden: 'dot -T svg -o .svg'. '>' sollte aber so gut sein. – vaettchen

Verwandte Themen