Plotta antalet inlägg över tid
Låt oss repetera hur du kan plotta evolverande grafstatistik från grafdata. Först använder du grafdata för att kvantifiera antalet kanter som dyker upp inom ett tidsintervall på td dagar – i övningen nedan är det 2 dagar.
Datetimevariablerna dayone och lastday har redan definierats åt dig.
Den här övningen är en del av kursen
Nätverksanalys i Python – fortsättningskurs
Övningsinstruktioner
- Definiera en tidsdelta på 2 dagar med funktionen
timedelta()och ange ett argument för parameterndays. - Inuti
while-loopen:- Filtrera kanterna så att de ligger inom det glidande tidsfönstret. Använd en listomfattning där utdatauttrycket är
(u, v, d), iterobjektet ärG.edges(data=True)och det finns två villkor: omd['date']är>=curr_dayoch<curr_day+td. - Lägg till antalet kanter (använd funktionen
len()för att beräkna detta) in_posts. - Öka
curr_daymed tidsdeltattd.
- Filtrera kanterna så att de ligger inom det glidande tidsfönstret. Använd en listomfattning där utdatauttrycket är
- Skapa ett diagram över
n_postsmedplt.plot().
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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()