Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Zdefiniuj przedział czasowy wynoszący 2 dni, używając funkcji timedelta() i podając odpowiedni argument dla parametru days.
  • 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 jest G.edges(data=True), a warunki są dwa: d['date'] jest >= curr_day i < niż curr_day + td.
    • Dołącz liczbę krawędzi (użyj funkcji len(), aby ją obliczyć) do n_posts.
    • Zwiększ curr_day o przedział czasowy td.
  • Utwórz wykres n_posts za 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()  
Edytuj i uruchom kod