NetworkX kann auch matplotlib verwenden, aber es scheint, dass das Zeichnen des Diagramms mit PyGraphviz oder Gephi verschiedene feinere Einstellungen bietet.
Hier wird nach dem Erstellen eines Diagramms mit japanisch beschrifteten Kanten in NetworkX unter Python AGraph-Klassenobjekt (Punktformat) Hier ist ein Beispiel für die Konvertierung in /agraph.html) und die Ausgabe des Zeichnungsergebnisses als Datei mit pygraphviz und die gleichzeitige Ausgabe einer GraphML-Datei. Die ausgegebene GraphML-Datei kann zur Visualisierung in Gephi eingegeben werden.
Im Übrigen werde ich die Installationsmethode zusammenfassen.
NetworkX
> pip install networkx
PyGraphviz
Wenn Sie versuchen, es mit pip so wie es ist einzufügen, erhalten Sie einen Fehler wie "schwerwiegender Fehler:" graphviz / cgraph.h "Datei nicht gefunden" (https://pod.hatenablog.com/entry/2015/03/07/163911) Installieren Sie es also gemäß dieser Seite.
Graphviz wird separat installiert und der Pfad wird übergeben. Der Punkt ist, dass es die Person gibt, die PyGraphviz für conda verpackt hat. Der Punkt ist, diesen Kanal anzugeben und Folgendes zu tun:
> conda install -c alubbock pygraphviz
Gephi
Installieren Sie von https://gephi.org/.
Wenn Sie eine Kante auf der NetworkX-Seite hinzufügen, fügen Sie "label" wie unten gezeigt hinzu.
import pygraphviz as pgv
import networkx as nx
G = nx.Graph()
#Wenn es sich um eine niedrigere Beschriftung handelt, wird sie auf der Graphviz-Seite als Beschriftung erkannt.
#Auf der Gephi-Seite ist entweder Groß- oder Kleinschreibung in Ordnung
G.add_edges_from([('Knoten 1', 'Knoten 2', {'label': 'Kante', 'weight': 0.2})])
print(list(G.nodes))
#Es ist auch möglich, Attribute hinzuzufügen
G.node['Knoten 1']['style'] = 'solid,filled'
G.node['Knoten 1']['fillcolor'] = '#ccccff'
G.node['Knoten 1']['shape'] = 'egg'
G.node['Knoten 2']['color'] = '#ff9999'
G.node['Knoten 2']['fontcolor'] = 'red'
G.edges['Knoten 1', 'Knoten 2']['style'] = 'dotted'
G.edges['Knoten 1', 'Knoten 2']['fontsize'] = 10
G.edges['Knoten 1', 'Knoten 2']['fontcolor'] = '#00cc66'
nx.write_graphml(G, "test.graphml") #GraphML-Datei für Gephi ausgeben
#In Graphraph für AGViz konvertieren und zeichnen
ag = nx.nx_agraph.to_agraph(G)
ag.node_attr.update(fontname="MS Gothic") #Bei Verwendung von MS Gothic unter Windows
ag.edge_attr.update(fontname="MS Gothic")
print(ag) #Kann in Punktsprache bestätigt werden
ag.draw('test.pdf', prog='fdp') #Versuchen Sie, fdp für das Layout anzugeben
Wenn Sie andere Attribute der Punktsprache wie "Farbe" zu Knoten und Kanten hinzufügen, wird dies in Graphviz wiedergegeben.
['Knoten 1', 'Knoten 2']
strict graph "" {
node [fontname="MS Gothic"];
edge [fontname="MS Gothic"];
Knoten 1[fillcolor="#ccccff",
shape=egg,
style="solid,filled"];
Knoten 2[color="#ff9999",
fontcolor=red];
Knoten 1--Knoten 2[fontcolor="#00cc66",
fontsize=10,
label=Kante,
style=dotted,
weight=0.2];
}
test.graphml
im obigen Beispiel) über" Öffnen ". (Wenn Sie die Erweiterung zum Zeitpunkt der Installation hinzugefügt haben, können Sie auf die GraphML-Datei doppelklicken.)Node Label> Show Label`` --
Knotenbezeichnung> Schriftart in japanische Schriftart --Überprüfen Sie "Seitenetikett> Kurzetikett" (Es gibt zwei "Kurzetiketten", aber das erste. Dies ist wahrscheinlich ein Fehler von "Etikett anzeigen".) --
Side label> Font` auf japanische SchriftExport nach PNG. Wenn es so bleibt, wie es ist, fehlt die Kante. Was das Kantenattribut betrifft, wurde Label gepunktet, daher habe ich alle Kantenattribute entfernt und die GraphML-Datei erneut ausgegeben. (Ist es nicht reproduzierbar?)
Vorerst wurde Japanisch angezeigt ...
Recommended Posts