如何使用 networkx 和 Matplotlib 制作多部分图?
matplotlibpythondata visualization更新于 2025/9/17 23:08:17
要在 networkx 中制作多部分图,我们可以采取以下步骤 −
设置图形大小并调整子图之间和周围的填充。
创建子集大小和颜色列表。
定义一个可以返回多层图对象的多层图方法。
设置节点的颜色。
将节点放置在直线层中。
使用 Matplotlib 绘制图形 G。
设置等轴属性。
要显示图形,请使用 show()方法。
示例
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()
输出

相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

