Harry Potter und die Netzwerkanalyse in Python: Alle Bände!
Als Ergänzung zum letzten Artikel zu Harry Potter habe für diesen Beitrag alle sieben Bände als Graphen visualisiert.
Im letzten Beitrag zu Netzwerkanalyse habe ich dir gezeigt, wie du anhand eines Buchtextes und einer Liste von Charakteren ein soziales Netzwerk visualisieren kannst. Der Graph zeigt dir dann, welche Figuren inhaltlich besonders viel miteinander zu tun haben und welche Figuren eher parallel zueinander existieren. Die Visualisierung mittels eines Graphen lässt sich natürlich nicht nur auf Literatur, sondern auf jede beliebige Art von Netzwerk anwenden (Twitter-Follower, Facebookfreunde, Bahnnetze…).
In diesem Beitrag siehst du für jeden der sieben Bände ein eigenes Netzwerkdiagramm. Zur Erinnerung: In unserem Beispiel gibt es zwischen zwei Figuren nur eine Beziehung, wenn beide in einem Abstand von maximal 50 Wörtern zueinander genannt werden. Deshalb hat auch Harry Potter in den Grafiken nicht zu jedem anderen Charakter eine Verbindung – obwohl er die Hauptfigur ist.
Band 1 – Harry Potter und der Stein der Weisen
Band 2 – Harry Potter und die Kammer des Schreckens
Band 3 – Harry Potter und der Gefangene von Askaban
Band 4 – Harry Potter und der Feuerkelch
Band 5 – Harry Potter und der Orden des Phönix
Band 6 – Harry Potter und der Halbblutprinz
Band 7 – Harry Potter und die Heiligtümer des Todes
Alle Bände zusammen
Hi, danke für die coolen Denkanstöße!
Deine Beispiele sind gut nachvollziehbar.
Wie hast Du in diesen Beispiel die Darstellung so hinbekommen?
Liebe Grüsse
Jupy
Hi Jupy,
freut mich, dass dir der Artikel gefallen hat.
Den Code kannst du Zeile für Zeile im Beitrag davor nachlesen.
Hilft dir das?
Viele Grüße
Chris
Hi Chris,
danke für die Antwort. Hier ich meine die Anordnung der Knoten im Plot.
Viele Grüße
Jupy
@Jupy
You can set the positions of the nodes to show a circle layout:
I hope this is what you wanted.
G.add_edges_from(edges)
number_of_nodes = G.number_of_nodes()
weights_nodes = weights[:number_of_nodes]
# Set the positions of the nodes in a circle layout
pos = nx.circular_layout(G)
nx.draw(
G,
pos,
width=[(weight / 8) ** 0.5 for weight in weights],
with_labels=True,
edge_color=“lightgrey“,
node_size=[(weight * 15000) ** 0.5 for weight in weights_nodes],
node_color=“red“,
node_shape=“o“,
font_size=10,
font_color=“black“,
alpha=0.9,
)
plt.show
@Jupy
to get a similar layout you might also have to change the figure size.
This is how I did it with a different book as a text source:
…
plt.figure(figsize=(15, 10))
nx.draw(….
)