Vẽ số lượng bài đăng theo thời gian
Hãy cùng tổng kết cách bạn có thể vẽ các thống kê đồ thị biến thiên theo thời gian từ dữ liệu đồ thị. Trước hết, bạn sẽ dùng dữ liệu đồ thị để định lượng số lượng cạnh xuất hiện trong một cửa sổ thời gian phân mảnh có kích thước td ngày, là 2 ngày trong bài tập dưới đây.
Các biến datetime dayone và lastday đã được cung cấp cho bạn.
Bài tập này là một phần của khóa học
Phân tích mạng nâng cao với Python
Hướng dẫn bài tập
- Định nghĩa một timedelta 2 ngày bằng hàm
timedelta()và chỉ định đối số cho tham sốdays. - Bên trong vòng lặp
while:- Lọc các cạnh sao cho chúng nằm trong cửa sổ thời gian trượt. Dùng một list comprehension để làm việc này, với biểu thức đầu ra là
(u, v, d), iterable làG.edges(data=True), và có hai điều kiện: nếud['date']là>=curr_dayvà<curr_day+td. - Thêm số lượng cạnh (dùng hàm
len()để tính) vàon_posts. - Tăng
curr_daythêm khoảng thời giantd.
- Lọc các cạnh sao cho chúng nằm trong cửa sổ thời gian trượt. Dùng một list comprehension để làm việc này, với biểu thức đầu ra là
- Vẽ biểu đồ
n_postsbằngplt.plot().
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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()