Ich wollte vom Zeichnen mit matplotlib.pyplot zu grahviz wechseln, also habe ich verschiedene Dinge ausprobiert.
Ich habe eine nützliche Sache namens PyGraphviz gefunden. Installieren Sie unter Bezugnahme auf den offiziellen (http://pygraphviz.github.io/documentation/pygraphviz-1.3rc1/install.html#quick-install).
Ich habe also einen Pip
% pip install pygraphviz
Es endet mit.
pgvSample.py
import pygraphviz as pgv
import networkx as nx
#Erstellen Sie normal networkx-Diagramme
h = nx.newman_watts_strogatz_graph(10,3,0.4)
#Konvertiere dies in eine Agraph-Klasse (PyGraphviz)
g = nx.to_agraph(h)
#file.Ausgabe mit dem Namen pdf, verwenden Sie circo für das Layout
g.draw('file.pdf',prog='circo')
(Ergänzung) Die Konvertierungsmethode wurde von Networkx 1.11 auf ein anderes Modul geändert. http://networkx.readthedocs.io/en/networkx-1.11/reference/drawing.html
g = nx.nx_agraph.to_agraph(h)
Wenn diese 5 Zeilen ausgeführt werden, wird die Datei.pdf erstellt.
% python pgvSample.py % ls file.pdf pgvSample.py % open file.pdf
Wenn ich es öffne, sieht es so aus.
Für das Layout des Diagramms gibt es verschiedene Optionen, wenn Sie sich die Dokumentation ansehen.
prog=[’neato’|’dot’|’twopi’|’circo’|’fdp’|’nop’]
Was jeder von ihnen ist, ist auf dieser Website zusammengefasst (http://melborne.github.io/2013/04/02/graphviz-layouts/).
Fügen Sie einfach diese eine Zeile zum obigen Programm hinzu und Sie können sie als Punktdatei speichern.
pgvSample.py
g.write("file.dot")
So was.
% cat file.dot strict graph "newman_watts_strogatz_graph(10,3,0.4)" { 0 -- 1; 0 -- 6; 0 -- 9; 1 -- 2; 1 -- 5; 2 -- 3; 2 -- 5; 2 -- 8; 3 -- 4; 3 -- 9; 4 -- 5; 4 -- 8; 5 -- 6; 6 -- 7; 7 -- 8; 8 -- 9; }
Die AGraph-Klasse kann auch eine .dot-Datei lesen und ein Diagramm erstellen. Daher kann es praktisch sein, wenn Sie dasselbe Diagramm bei einer anderen Gelegenheit verwenden möchten. (Referenz: ** Tutorial ** http://networkx.lanl.gov/pygraphviz/tutorial.html)
Es scheint, dass verschiedene Kooperationen mit networkX durchgeführt werden können.
** Graphviz AGraph (Punkt) ** Element http://networkx.lanl.gov/reference/drawing.html
Recommended Posts