Aan de slagBegin gratis

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

Bekijk cursus

Oefeninstructies

  • Definieer een tijdsdelta van 2 dagen met de functie timedelta() en geef een argument op voor de parameter days.
  • 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 iterable G.edges(data=True), en er twee voorwaarden zijn: als d['date'] >= curr_day is en < dan curr_day + td.
    • Voeg het aantal randen (gebruik de functie len() om dit te berekenen) toe aan n_posts.
    • Verhoog curr_day met de tijdsdelta td.
  • Maak een plot van n_posts met plt.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()  
Code bewerken en uitvoeren