我想在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()
This是我在stackoverflow上发现的最相关的问题。但是我找不到为to_agraph
类添加颜色和任何其他样式的方法。