Trực quan hóa bằng biểu đồ ma trận
Đến lúc bạn thử phương pháp trực quan hóa đồ thị "xịn" đầu tiên: biểu đồ ma trận (matrix plot). Để làm việc này, nxviz cung cấp hàm matrix(). Hàm này, giống như tất cả các hàm API cấp cao của nxviz, sẽ trả về một đối tượng axes của matplotlib có thể hiển thị bằng plt.show().
nxviz là một gói để trực quan hóa đồ thị theo cách có hệ thống. Ẩn bên dưới, hàm matrix sử dụng nx.to_numpy_array(G), hàm này trả về dạng ma trận của đồ thị. Ở đây, mỗi nút là một cột và một hàng, và một cạnh giữa hai nút được biểu thị bằng giá trị 1. Tuy nhiên, khi làm như vậy, chỉ siêu dữ liệu weight được giữ lại; mọi siêu dữ liệu khác sẽ bị mất, và bạn sẽ kiểm chứng điều này bằng một câu lệnh assert.
Hàm tương ứng nx.from_numpy_array(A) cho phép nhanh chóng tạo đồ thị từ một mảng NumPy. Kiểu đồ thị mặc định là Graph(); nếu bạn muốn tạo DiGraph(), cần chỉ định bằng đối số từ khóa create_using, ví dụ (nx.from_numpy_array(A, create_using=nx.DiGraph)).
Lưu ý cuối cùng, matplotlib.pyplot và networkx đã được nhập dưới tên plt và nx, và đồ thị T đã được nạp sẵn. Để đơn giản và nhanh hơn, chúng tôi đã lấy mẫu phụ chỉ 100 cạnh từ mạng.
Bài tập này là một phần của khóa học
Nhập môn Phân tích Mạng bằng Python
Hướng dẫn bài tập
- Import
matrixtừnxviz. - Vẽ đồ thị
Tbằng biểu đồ ma trận. Cách thực hiện:- Tạo biểu đồ ma trận tên
mbằng hàmnv.matrix()vớiTtruyền vào làm đối số. - Hiển thị biểu đồ bằng
plt.show().
- Tạo biểu đồ ma trận tên
- Chuyển đồ thị sang định dạng ma trận, rồi chuyển lại sang dạng NetworkX từ ma trận dưới dạng đồ thị có hướng. Phần này đã được làm sẵn cho bạn.
- Kiểm tra rằng trường siêu dữ liệu
categoryđã bị mất ở mỗi nút. Phần này cũng đã được làm sẵn, nên hãy bấm 'Gửi câu trả lời' để xem kết quả!
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 nxviz
____
# Create the matrix plot: m
m = ____
# Display the plot
____
# Convert T to a matrix format: A
A = nx.to_numpy_array(T)
# Convert A back to the NetworkX form as a directed graph: T_conv
T_conv = nx.from_numpy_array(A, create_using=nx.DiGraph())
# Check that the `category` metadata field is lost from each node
for n, d in T_conv.nodes(data=True):
assert 'category' not in d.keys()