- pandas - matplotlib - networkx Pandas NetworkX Example

NetworkX plot and Pandas table with PyScript for Auditing



import networkx as nx import pandas as pd from matplotlib import pyplot as plt # Daten data = { 'Sender': ['konto7@beispiel.de', 'konto5@beispiel.de', 'konto10@beispiel.de', 'konto8@beispiel.de', 'konto2@beispiel.de', 'konto4@beispiel.de', 'konto1@beispiel.de', 'konto6@beispiel.de', 'konto7@beispiel.de', 'konto9@beispiel.de'], 'Empfaenger': ['konto4@beispiel.de', 'konto4@beispiel.de', 'konto5@beispiel.de', 'konto3@beispiel.de', 'konto7@beispiel.de', 'konto10@beispiel.de', 'konto5@beispiel.de', 'konto8@beispiel.de', 'konto6@beispiel.de', 'konto2@beispiel.de'], 'Anzahl_Emails': [6, 18, 26, 15, 47, 8, 100, 26, 17, 2] } df = pd.DataFrame(data) G = nx.DiGraph() for index, row in df.iterrows(): G.add_edge(row['Sender'], row['Empfaenger'], weight=row['Anzahl_Emails']) # Berechnen der Knotengrößen basierend auf der Anzahl der Verbindungen knotengroessen = [G.degree(node) * 200 for node in G.nodes()] # Visualisierung des Graphen plt.figure(figsize=(12, 8)) pos = nx.spring_layout(G) nx.draw_networkx_nodes(G, pos, node_color='skyblue', node_size=knotengroessen) nx.draw_networkx_edges(G, pos, edge_color='gray') nx.draw_networkx_labels(G, pos, font_color='green', font_size=10) nx.draw_networkx_edge_labels(G, pos, edge_labels=nx.get_edge_attributes(G, 'weight')) # Anzeige des Diagramms pyscript.write("pandas-table", df ) pyscript.write("pandas-plot", plt.gcf())