如何在同一级别固定networkx节点的顺序?

时间:2018-10-12 08:22:07

标签: python matplotlib graph networkx graph-visualization

我想在matplotlib图中用networkx软件包绘制两层图形。

第一层是节点A01〜A08,第二层是节点B01〜B08。 A层和B层之间的节点是随机配对的,但是两层中节点的顺序是固定的。

通过使用下面的代码,节点被分为两层,但是第二层中的节点顺序被重新排列。

如何确定所有层中节点的顺序。

import random
import networkx as nx
from networkx.drawing.nx_agraph import graphviz_layout
import matplotlib.pyplot as plt

nodes_A = [f"A{i:02}" for i in range(1, 9)]
nodes_B = [f"B{i:02}" for i in range(1, 9)]
G = nx.DiGraph()
G.add_nodes_from(nodes_A + nodes_B)
G.add_edges_from(list(zip(nodes_A, sorted(nodes_B, key=lambda k: random.random()))))

pos = graphviz_layout(G, prog="dot")
color_node = ["red" if n.startswith("A") else "green" for n in G.nodes()]

fig, ax = plt.subplots(figsize=(4, 3), dpi=300)
nx.draw(G, pos, with_labels=True, node_color=color_node, node_size=500)
plt.show()

fig

This是我在stackoverflow上发现的最相关的问题。但是我找不到为to_agraph类添加颜色和任何其他样式的方法。

0 个答案:

没有答案