Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tạo đồ thị đa phân (multipartite graphs) với NetworkX và Matplotlib

Để tạo đồ thị đa phân (multipartite graph) trong NetworkX:

  • Thiết lập kích thước figure và padding
  • Tạo list kích thước subset và màu sắc
  • Định nghĩa hàm tạo đồ thị đa lớp trả về graph object
  • Đặt màu cho các node theo layer
  • Vị trí node theo layout multipartite (hàng thẳng)
  • Vẽ đồ thị G với Matplotlib
  • Đặt tỷ lệ trục bằng nhau
  • Hiển thị bằng show()

Ví dụ mã nguồn

import itertools
import matplotlib.pyplot as plt
import networkx as nx

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

subset_sizes = [5, 5, 4, 3, 2, 4, 4, 3]
subset_color = [
    "gold", "violet", "violet", "violet", "violet",
    "limegreen", "limegreen", "darkorange",
]

def multilayered_graph(*subset_sizes):
    extents = nx.utils.pairwise(itertools.accumulate((0,) + subset_sizes))
    layers = [range(start, end) for start, end in extents]
    G = nx.Graph()
    for (i, layer) in enumerate(layers):
        G.add_nodes_from(layer, layer=i)
    for layer1, layer2 in nx.utils.pairwise(layers):
        G.add_edges_from(itertools.product(layer1, layer2))
    return G

G = multilayered_graph(*subset_sizes)
color = [subset_color[data["layer"]] for v, data in G.nodes(data=True)]
pos = nx.multipartite_layout(G, subset_key="layer")
nx.draw(G, pos, node_color=color, with_labels=False)
plt.axis("equal")
plt.show()

Kết quả

Đồ thị đa phân với 8 lớp node, mỗi lớp một màu, các node trong lớp cùng hàng, kết nối đầy đủ giữa các lớp liền kề.

Tạo đồ thị đa phân (multipartite graphs) với NetworkX và Matplotlib

Ứng dụng: Mô hình mạng nơ-ron, hệ thống phân tầng, luồng dữ liệu qua các giai đoạn.