Wykres liczby publikowanych wpisów w czasie
Przypomnijmy, jak wizualizować zmieniające się statystyki grafu na podstawie danych grafowych. Najpierw skorzystasz z tych danych, aby policzyć liczbę krawędzi pojawiających się w oknie czasowym o rozmiarze td dni – w poniższym ćwiczeniu będą to 2 dni.
Zmienne typu datetime – dayone oraz lastday – zostały już przygotowane.
To ćwiczenie jest częścią kursu
Analiza sieci w Pythonie – poziom średniozaawansowany
Instrukcje do ćwiczenia
- Zdefiniuj przedział czasowy wynoszący 2 dni, używając funkcji
timedelta()i podając odpowiedni argument dla parametrudays. - Wewnątrz pętli
while:- Odfiltruj krawędzie mieszczące się w przesuwającym się oknie czasowym. Użyj wyrażenia listowego, w którym wyrażenie wynikowe to
(u, v, d), iterowalnym jestG.edges(data=True), a warunki są dwa:d['date']jest>=curr_dayi<niżcurr_day+td. - Dołącz liczbę krawędzi (użyj funkcji
len(), aby ją obliczyć) don_posts. - Zwiększ
curr_dayo przedział czasowytd.
- Odfiltruj krawędzie mieszczące się w przesuwającym się oknie czasowym. Użyj wyrażenia listowego, w którym wyrażenie wynikowe to
- Utwórz wykres
n_postsza pomocąplt.plot().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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()