Anzahl der Beiträge im Zeitverlauf plotten
Fassen wir zusammen, wie du sich entwickelnde Graph-Statistiken aus Graphdaten plotten kannst. Zuerst verwendest du die Graphdaten, um die Anzahl der Kanten zu quantifizieren, die innerhalb eines Zeitfensters td Tage auftreten; im Beispiel unten sind das 2 Tage.
Die Datetime-Variablen dayone und lastday sind für dich vorgegeben.
Diese Übung ist Teil des Kurses
Fortgeschrittene Netzwerkanalyse in Python
Anleitung zur Übung
- Definiere eine Zeitspanne von 2 Tagen mit der Funktion
timedelta()und einem Argument für den Parameterdays. - Innerhalb der
while-Schleife:- Filtere Kanten so, dass sie innerhalb des gleitenden Zeitfensters liegen. Verwende dafür eine List Comprehension, bei der der Ausgabeausdruck
(u, v, d)ist, der IteratorG.edges(data=True)und zwei Bedingungen gelten: wennd['date']>=curr_dayund<curr_day+tdist. - Hänge die Anzahl der Kanten (verwende dafür die Funktion
len()) ann_postsan. - Erhöhe
curr_dayum die Zeitspannetd.
- Filtere Kanten so, dass sie innerhalb des gleitenden Zeitfensters liegen. Verwende dafür eine List Comprehension, bei der der Ausgabeausdruck
- Erstelle ein Diagramm von
n_postsmitplt.plot().
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Import necessary modules
from datetime import timedelta
import matplotlib.pyplot as plt
# Define current day and timedelta of 2 days
curr_day = dayone
td = ____
# Initialize an empty list of posts by day
n_posts = []
while curr_day < lastday:
if curr_day.day == 1:
print(curr_day)
# Filter edges such that they are within the sliding time window: edges
edges = [(____, ____, ____) for u, v, d in ____ if d['date'] >= ____ and d['date'] < ____ + ____]
# Append number of edges to the n_posts list
____
# Increment the curr_day by the time delta
____ += ____
# Create the plot
plt.plot(____)
plt.xlabel('Days elapsed')
plt.ylabel('Number of posts')
plt.show()