Wer spricht mit wem? — die Bienenkönigin finden
Du holst dir die öffentlichen Beitragsdaten einer Open-Source-Gemeinschaft, zeichnest ihr Netzwerk und berechnest, wer im Zentrum steht — die heimliche Bienenkönigin, die den Schwarm zusammenhält.
Kurz gesagt
Was: Aus einer Liste „wer hat auf wen geantwortet“ baust du mit networkx ein
Netzwerk und lässt es zeichnen. Dann berechnest du die Betweenness-Zentralität und findest die
Person, über die die meisten Verbindungen laufen — den Knotenpunkt, der die Gruppe zusammenhält.
Warum: Ein unsichtbares Kollegium — Open Source, offene Wissenschaft — ist ein Netzwerk, und Netzwerke lassen sich messen. Du erlebst, dass man einer Gruppe ansieht, wo ihre verbindende Führung sitzt — ohne jemanden zu fragen.
Du brauchst: Python mit networkx, pandas und
matplotlib. Eine fertige Beispiel-Datenliste liegt im GitHub-Repo; wie du eigene Daten
holst, steht in der Erweiterung.
Worum es geht
1614 kündigte eine Flugschrift eine geheime Bruderschaft an, die ihr Wissen über ein unsichtbares Netzwerk teilte — die Rosenkreuzer. Die Bruderschaft war erfunden, doch die Idee wurde wahr: in der Royal Society, die Robert Boyle ein „unsichtbares Kollegium“ nannte, und heute in Open Source und offener Wissenschaft. Solche Gruppen — der Autor nennt sie Collaborative Innovation Networks — sind die lebenden Nachfahren jener erfundenen Bruderschaft.
Und ein Kollegium lässt sich lesen. Zeichnet man auf, wer mit wem schreibt, bekommt das Netz eine charakteristische Form: Die meisten Mitglieder sind mit wenigen anderen verbunden, aber einige wenige — die Knotenpunkte — mit sehr vielen. Diese Knotenpunkte halten den Schwarm zusammen; sie sind, im Bild aus Kapitel 6, die Bienenkönigin: nicht Befehlshaberin, aber das Zentrum, um das sich alles ordnet. Bei Linux sitzt Linus Torvalds an genau dieser Stelle — und mit der Betweenness-Zentralität aus Kapitel 5 kannst du das nicht nur behaupten, sondern berechnen.
Ein bisschen Hintergrund
Woher die Daten? Wir lesen — wie schon in 5.2 — nur das Muster, nicht den Inhalt: eine Kantenliste „A hat auf B geantwortet“. Solche Daten liefern offene Gemeinschaften frei: die Kommentare unter den Issues und Pull-Requests eines Projekts auf einer Plattform wie GitHub, oder das Archiv einer Mailingliste. Für den Einstieg nimmst du die vorbereitete Beispiel-Datei aus dem Repo; die Erweiterung zeigt, wie du dir mit ein paar Zeilen deine eigenen Daten holst.
Was ist Betweenness-Zentralität? Stell dir vor, jede Person will jede andere erreichen und nimmt dafür immer den kürzesten Weg durchs Netz. Die Betweenness einer Person zählt, auf wie vielen dieser kürzesten Wege sie liegt. Eine Person mit hoher Betweenness ist eine Brücke: Nimmt man sie heraus, zerfällt die Gruppe leicht in Inseln. Das ist etwas anderes als „hat viele Verbindungen“ — es heisst „verbindet die anderen miteinander“. Genau das meint die „starke, verbindende Führung“ unter den sechs Signalen.
Öffentlich heisst nicht rücksichtslos
Auch öffentliche Beitragsdaten betreffen echte Menschen. Wir werten Struktur aus, nicht Inhalte, und wir stellen niemanden bloss. „Bienenkönigin“ ist eine Rolle im Netz, kein Werturteil über einen Menschen. Wenn ihr statt Open-Source-Daten euren eigenen Klassen-Chat nehmt (aus 5.2), gilt dasselbe wie dort: Einverständnis einholen, Namen anonymisieren.
Das Netzwerk bauen
- Pakete installieren.
pip install networkx pandas matplotlib. - Kantenliste holen. Beispiel-Datei
kanten.csvaus dem Repo laden (Spaltenquelle,ziel= „quelle hat auf ziel geantwortet“) — oder die eigene aus 5.2 bzw. der Erweiterung verwenden. - Graph zeichnen. Skript unten ausführen. Es zeichnet das Netz, Knoten nach Betweenness skaliert.
- Bienenkönigin bestimmen. Die Person mit der höchsten Betweenness ablesen — und mit deinem ersten Eindruck vergleichen.
Auswerten mit networkx
Rund fünfundzwanzig Zeilen — der Kern ist eine einzige Funktion, betweenness_centrality.
Vollständiger Code und Beispieldaten auf
GitHub.
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt
# Kantenliste: jede Zeile = "quelle hat auf ziel geantwortet"
kanten = pd.read_csv("kanten.csv") # Spalten: quelle, ziel
G = nx.from_pandas_edgelist(kanten, "quelle", "ziel")
# Das zentrale Mass: wer liegt auf den meisten kuerzesten Wegen?
bc = nx.betweenness_centrality(G)
koenigin = max(bc, key=bc.get)
print(f"Bienenkoenigin (hoechste Betweenness): {koenigin} ({bc[koenigin]:.3f})")
# Vergleich: reine Anzahl Verbindungen (Grad) — oft NICHT dieselbe Person
grad = dict(G.degree())
print("Top nach Verbindungen:", sorted(grad, key=grad.get, reverse=True)[:3])
print("Top nach Betweenness :", sorted(bc, key=bc.get, reverse=True)[:3])
# Zeichnen: Knotengroesse ~ Betweenness (die SocialCompass-Idee)
groessen = [400 + 6500*bc[n] for n in G.nodes()]
farben = ["#8a5a1a" if n == koenigin else "#2F5D3A" for n in G.nodes()]
pos = nx.spring_layout(G, seed=3)
nx.draw_networkx_edges(G, pos, alpha=0.35)
nx.draw_networkx_nodes(G, pos, node_size=groessen, node_color=farben)
plt.axis("off"); plt.tight_layout(); plt.show()
Was du sehen solltest
Ein Netz mit vielen kleinen Randknoten und einigen grossen im Zentrum — die typische skalenfreie Form. Ein Knoten ragt heraus: die Bienenkönigin. Oft überrascht der Vergleich: Die Person mit den meisten Verbindungen ist nicht immer die mit der höchsten Betweenness. Wer alle miteinander verbindet (Brücke zwischen Gruppen), zählt hier mehr als wer einfach viele Kontakte hat.
Arbeitsblatt
Die verbindende Führung berechnen
- Schau dir das gezeichnete Netz an und tippe, bevor du die Zahlen liest: Wer ist die Bienenkönigin? Lag dein Auge richtig?
- Erkläre in eigenen Worten den Unterschied zwischen „hat die meisten Verbindungen“ (Grad) und „liegt auf den meisten kürzesten Wegen“ (Betweenness). Gib ein Beispiel, wo beide auseinanderfallen.
- Was passiert mit dem Netz, wenn man die Person mit der höchsten Betweenness entfernt? Warum ist das ein Zeichen ihrer Bedeutung?
- Warum hat ein solches Netz die skalenfreie Form (wenige grosse, viele kleine Knoten) — und nicht etwa lauter gleich grosse?
- Der Autor zeichnete einst aus seinem Deloitte-Postfach so ein Netz — ohne die Mails zu lesen. Was genau kann man aus dem blossen Muster ablesen, und wo ist die Grenze?
Lösung anzeigen
1. Individuell. Meist erkennt das Auge den grössten, zentral liegenden Knoten richtig — aber nicht immer, weil Betweenness die Lage im Netz misst, nicht nur die sichtbare Grösse.
2. Grad zählt die direkten Verbindungen einer Person. Betweenness zählt, auf wie vielen kürzesten Wegen zwischen anderen sie liegt. Beispiel: Eine Person, die zwei sonst getrennte Gruppen als einzige Brücke verbindet, hat vielleicht nur zwei Kontakte (niedriger Grad), aber sehr hohe Betweenness — jeder Weg zwischen den Gruppen läuft über sie.
3. Das Netz zerfällt oft in mehrere Inseln, die nicht mehr verbunden sind. Gerade weil so viele Verbindungen über diese Person laufen, hält sie den Schwarm zusammen — das ist die Bedeutung einer verbindenden Führung.
4. Weil neue Mitglieder sich bevorzugt mit schon gut vernetzten Personen verbinden („wer viel hat, bekommt mehr“). So wachsen wenige Knoten zu grossen Knotenpunkten, während die meisten wenige Verbindungen behalten — die typische skalenfreie Form.
5. Aus dem Muster liest man Struktur: wer verbindet, wer am Rand steht, wie schnell reagiert wird, ob die Führung wandert — also die Signale der Zusammenarbeit. Die Grenze: warum jemand zentral ist, worüber geredet wird und wie es den Menschen geht, sagt das Muster nicht. Dafür braucht es Inhaltsanalyse (Kapitel 7) — und stets die Einwilligung der Beteiligten.
Wenn's klemmt
| Problem | Wahrscheinliche Ursache & Lösung |
|---|---|
| Graph ist ein wirres Knäuel | Zu viele Knoten fürs Auge. Nur die aktivsten behalten (z. B. Personen mit ≥ 3 Verbindungen) oder das Layout mit k= in spring_layout auflockern. |
| Betweenness überall 0 | Das Netz zerfällt in isolierte Paare ohne durchlaufende Wege. Mehr Daten sammeln oder prüfen, ob die Kantenliste wirklich Antworten (gerichtete Reaktionen) enthält. |
| Rechnung sehr langsam | Betweenness ist bei grossen Netzen teuer. nx.betweenness_centrality(G, k=100) schätzt sie aus einer Stichprobe von 100 Knoten — für die Rangfolge meist genug. |
| Namen doppelt (Groß-/Kleinschreibung, Aliase) | „Mira“ und „mira“ werden als zwei Personen gezählt. Vor dem Bauen vereinheitlichen (.str.lower().str.strip()). |
| CSV lädt nicht | Trennzeichen oder Spaltennamen weichen ab. pd.read_csv(..., sep=";") testen; Spalten auf quelle,ziel umbenennen. |
Zum Nachdenken
- Ein unsichtbares Kollegium ist ein Netzwerk — und Netzwerke lassen sich messen, ohne jemanden zu befragen. Das ist mächtig und heikel zugleich: Dieselbe Karte, die zeigt, wo die Zusammenarbeit blüht, zeigt auch, wer verletzlich ist, wenn er das Netz verlässt.
- Die Bienenkönigin ist keine Befehlshaberin. Hohe Betweenness heisst „hält zusammen“, nicht „bestimmt“. Wer das Mass als Rangliste der Wichtigkeit missversteht, überschätzt, was ein Netzwerk sagt — es misst Lage, nicht Wert eines Menschen.
- Der Autor las nie den Inhalt der Mails, nur ihr Muster — und das war schon aufschlussreich genug, um zu erkennen, dass die echte Zusammenarbeit anders lief als das Organigramm behauptete. Struktur ist ein ehrliches Signal. Genau deshalb gilt auch hier die goldene Regel: aggregiert fürs Ganze, persönlich nur für die Person.
Erweiterung
- Eigene Daten von GitHub holen. Über die öffentliche GitHub-API kannst du zu einem Projekt die
Issues und ihre Kommentare abrufen und daraus eine Kantenliste „Kommentator → Autor“ bauen. Ein kleines
Skript dafür liegt im Repo (Ordner
kap08); ohne Zugangstoken reicht das Ratenlimit für ein kleines Projekt. - Euren eigenen Chat als Netz. Nimm das „wer antwortet auf wen“ aus Aktivität 5.2 und zeichne es hier als Netzwerk. So verbindest du die beiden Aktivitäten — und findet ihr eure eigene Bienenkönigin?
- Führung über die Zeit. Teile die Daten in Zeitabschnitte und berechne die Betweenness je Abschnitt. Wandert die verbindende Führung, oder klebt sie bei einer Person? Das Wandern ist eines der sechs Signale — und ein gutes Zeichen für eine gesunde Gruppe.
- Ausblick Condor / Teil IV. Genau diese Netzkarten, nur in Bewegung über die Zeit, zeichnet das Programm Condor. In Teil IV siehst du, wie daraus die Stimmung und Entwicklung ganzer Gruppen lesbar wird.