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())