Plot het aantal geplaatste posts in de tijd
Laten we herhalen hoe je veranderende grafiekstatistieken uit de graafdata kunt plotten. Eerst gebruik je de graafdata om het aantal randen te bepalen dat voorkomt binnen een tijdfenster td dagen; in de oefening hieronder is dat 2 dagen.
De datetime-variabelen dayone en lastday zijn voor je klaargezet.
Deze oefening maakt deel uit van de cursus
Gemiddelde netwerkanalyse in Python
Oefeninstructies
- Definieer een tijdsdelta van 2 dagen met de functie
timedelta()en geef een argument op voor de parameterdays. - Binnen de
while-lus:- Filter randen zodat ze binnen het schuivende tijdfenster vallen. Gebruik hiervoor een list comprehension, waarbij de outputexpressie
(u, v, d)is, de iterableG.edges(data=True), en er twee voorwaarden zijn: alsd['date']>=curr_dayis en<dancurr_day+td. - Voeg het aantal randen (gebruik de functie
len()om dit te berekenen) toe aann_posts. - Verhoog
curr_daymet de tijdsdeltatd.
- Filter randen zodat ze binnen het schuivende tijdfenster vallen. Gebruik hiervoor een list comprehension, waarbij de outputexpressie
- Maak een plot van
n_postsmetplt.plot().
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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()