NetworkX peut également utiliser matplotlib, mais il semble que dessiner le graphique avec PyGraphviz ou Gephi donne divers paramètres plus fins.
Ici, après avoir créé un graphe avec des arêtes étiquetées en japonais dans NetworkX sur Python, objet de classe AGraph (format point) Voici un exemple de conversion en /agraph.html) et de sortie du résultat du dessin sous forme de fichier avec pygraphviz, et en même temps de sortie d'un fichier GraphML. Le fichier GraphML de sortie peut être entré dans Gephi pour la visualisation.
Incidemment, je vais résumer la méthode d'installation.
NetworkX
> pip install networkx
PyGraphviz
Si vous essayez de l'insérer avec pip tel quel, vous obtiendrez une erreur telle que `` erreur fatale: fichier 'graphviz / cgraph.h' introuvable '' (https://pod.hatenablog.com/entry/2015/03/07/163911) Alors, installez-le selon cette page.
Graphviz est installé séparément et le chemin est transmis. Le fait est que PyGraphviz est emballé pour conda. Le but est de spécifier ce canal et de faire ce qui suit:
> conda install -c alubbock pygraphviz
Gephi
Installez depuis https://gephi.org/.
--Si vous souhaitez ouvrir GraphML en double-cliquant, cochez la case dans la spécification d'extension.
Lors de l'ajout d'un bord côté NetworkX, ajoutez label
comme indiqué ci-dessous.
import pygraphviz as pgv
import networkx as nx
G = nx.Graph()
#S'il s'agit d'un libellé inférieur, il sera reconnu comme un libellé côté Graphviz.
#Du côté Gephi, les majuscules ou les minuscules sont OK
G.add_edges_from([('Nœud 1', 'Nœud 2', {'label': 'Bord', 'weight': 0.2})])
print(list(G.nodes))
#Il est également possible d'ajouter des attributs
G.node['Nœud 1']['style'] = 'solid,filled'
G.node['Nœud 1']['fillcolor'] = '#ccccff'
G.node['Nœud 1']['shape'] = 'egg'
G.node['Nœud 2']['color'] = '#ff9999'
G.node['Nœud 2']['fontcolor'] = 'red'
G.edges['Nœud 1', 'Nœud 2']['style'] = 'dotted'
G.edges['Nœud 1', 'Nœud 2']['fontsize'] = 10
G.edges['Nœud 1', 'Nœud 2']['fontcolor'] = '#00cc66'
nx.write_graphml(G, "test.graphml") #Fichier GraphML de sortie pour Gephi
#Convertir en AGraph pour GraphViz et dessiner
ag = nx.nx_agraph.to_agraph(G)
ag.node_attr.update(fontname="MS Gothic") #Lors de l'utilisation de MS Gothic sous Windows
ag.edge_attr.update(fontname="MS Gothic")
print(ag) #Peut être confirmé en langage point
ag.draw('test.pdf', prog='fdp') #Essayez de spécifier fdp pour la mise en page
Si vous ajoutez d'autres attributs de langage à points tels que color
aux nœuds et aux arêtes, cela sera reflété dans Graphviz.
['Nœud 1', 'Nœud 2']
strict graph "" {
node [fontname="MS Gothic"];
edge [fontname="MS Gothic"];
Nœud 1[fillcolor="#ccccff",
shape=egg,
style="solid,filled"];
Nœud 2[color="#ff9999",
fontcolor=red];
Nœud 1--Nœud 2[fontcolor="#00cc66",
fontsize=10,
label=Bord,
style=dotted,
weight=0.2];
}
test.graphml
dans l'exemple ci-dessus) depuis" Ouvrir ". (Si vous avez ajouté l'extension au moment de l'installation, vous pouvez double-cliquer sur le fichier GraphML.) Node Label> Show Label
--Node label> Font
en police japonaise
--Cochez Side label> Short label
(Il y a deux" Short label ", mais le premier. C'est probablement une erreur de" Show label ".)
-- Étiquette latérale> Police
en police japonaiseExporter au format png. S'il est laissé tel quel, le bord est manquant. En ce qui concerne l'attribut d'arête, l'étiquette est devenue pointillée, j'ai donc supprimé tous les attributs d'arête et sorti à nouveau le fichier GraphML. (N'est-ce pas reproductible?)
Pour le moment, le japonais était affiché ...
--Si vous souhaitez ajouter d'autres attributs en langage point, il semble bon de se référer à l'article Qiita ici.
Recommended Posts