[PYTHON] Visualisieren Sie Diagramme mit japanisch beschrifteten Kanten in NetworkX und PyGraphviz / Gephi

Einführung

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.

Installation

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

Kanteneigenschaften

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.

Graphviz Ausgabeergebnis

Zeichnungsergebnis

testgraph.png

AGraphendruck

['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];
}

Visualisiere mit Gephi

Laden und konfigurieren

  1. Starten Sie Gephi und öffnen Sie die GraphML-Datei (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.)
  2. Klicken Sie auf die Schaltfläche "Data Studio" und überprüfen Sie, ob die Beschriftung auf den Registerkarten "Knoten" und "Seite" korrekt angezeigt wird.
  3. Nehmen Sie die folgenden Einstellungen auf der Registerkarte "Einstellungen" der Vorschau vor. --Überprüfen Sie 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 Schrift
  4. Klicken Sie auf die Schaltfläche "Aktualisieren".

Zeichnungsergebnis

Export 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 ...

exportedGephi.png

Referenz

Recommended Posts

Visualisieren Sie Diagramme mit japanisch beschrifteten Kanten in NetworkX und PyGraphviz / Gephi
Beschriftetes Diagramm in NetworkX
Visualisieren Sie Schlüsselwörter in Dokumenten mit TF-IDF und Word Cloud
Das japanische Zeichen verstümmelte die Eliminierung von Matplotlib und NetworkX der Python-Bibliothek
Generieren Sie Diagramme dynamisch mit matplotlib und binden Sie sie mit reporlab in PDF ein
Verwenden Sie Richtungsdiagramme mit networkx
NetzwerkX-Diagramm mit graphviz ausgeben (PyGraphviz)