Je voulais passer du dessin en utilisant matplotlib.pyplot à grahviz, j'ai donc essayé différentes choses.
J'ai trouvé une chose utile appelée PyGraphviz. Installez en vous référant au site officiel (http://pygraphviz.github.io/documentation/pygraphviz-1.3rc1/install.html#quick-install).
J'ai un pip, donc
% pip install pygraphviz
Cela se termine par.
pgvSample.py
import pygraphviz as pgv
import networkx as nx
#Créez normalement des graphiques networkx
h = nx.newman_watts_strogatz_graph(10,3,0.4)
#Convertissez-le en classe agraph (PyGraphviz)
g = nx.to_agraph(h)
#file.Sortie avec le nom pdf, mise en page utilise circo
g.draw('file.pdf',prog='circo')
(Ajout) La méthode de conversion a été modifiée pour un autre module de Networkx 1.11. http://networkx.readthedocs.io/en/networkx-1.11/reference/drawing.html
g = nx.nx_agraph.to_agraph(h)
Lorsque ces 5 lignes sont exécutées, file.pdf est créé.
% python pgvSample.py % ls file.pdf pgvSample.py % open file.pdf
Quand je l'ouvre, ça ressemble à ça.
En ce qui concerne la mise en page du graphique, il existe différentes options lorsque vous consultez la documentation.
prog=[’neato’|’dot’|’twopi’|’circo’|’fdp’|’nop’]
Ce que chacun d'eux est est résumé sur ce site (http://melborne.github.io/2013/04/02/graphviz-layouts/).
Ajoutez simplement cette ligne au programme ci-dessus et vous pouvez l'enregistrer sous forme de fichier dot.
pgvSample.py
g.write("file.dot")
Comme ça.
% 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; }
La classe AGraph peut également lire un fichier .dot et créer un graphique, il peut donc être pratique si vous souhaitez utiliser le même graphique à une autre occasion. (Référence: ** Tutorial ** http://networkx.lanl.gov/pygraphviz/tutorial.html)
Il semble que diverses coopérations avec networkX puissent être réalisées.
** Graphviz AGraph (point) ** élément http://networkx.lanl.gov/reference/drawing.html
Recommended Posts