Bắt đầu ngayBắt đầu miễn phí

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.pyplotnetworkx đã được nhập dưới tên pltnx, 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

Xem khóa học

Hướng dẫn bài tập

  • Import matrix từ nxviz.
  • Vẽ đồ thị T bằng biểu đồ ma trận. Cách thực hiện:
    • Tạo biểu đồ ma trận tên m bằng hàm nv.matrix() với T truyền vào làm đối số.
    • Hiển thị biểu đồ bằng plt.show().
  • 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()
Chỉnh sửa và Chạy Mã