Graphique de sortie networkX avec graphviz (PyGraphviz)

Installation

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.

je l'ai écrit

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)

Courir

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.

Screen Shot 2014-10-05 at 12.31.37 AM.png

Disposition

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/).

Créer un fichier .dot

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)

Autres références

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

Graphique de sortie networkX avec graphviz (PyGraphviz)
Dessinez un graphique avec networkx
Graphique d'appel de sortie avec PyCallGraph
Sortie PDF avec Django
Mémo NetworkX (graphique dirigé)
Sortie Markdown avec Django
Sortie PDF avec WeasyPrint
Graphique de bande avec matplotlib
Facile avec juste Python! Affichez les figures Graphviz au format draw.io!
Graphique des données Excel avec matplotlib (1)
Utiliser des graphiques directionnels avec networkx
Utilisation de Graphviz avec Jupyter Notebook
Essayez la sortie Python avec Haxe 3.2
Tester la sortie standard avec Pytest
tracé Créer un graphique avec un bouton
Méthode de dessin graphique avec matplotlib
Graphique des données Excel avec matplotlib (2)
Dessin graphique avec IPython Notebook
Visualisez des graphiques avec des arêtes étiquetées en japonais sur NetworkX et PyGraphviz / Gephi