我有一个包含两种不同类型节点的 XML 文件(我们将其称为节点“a”和节点“b”)。它们是相连的。我想将节点“a”表示为正方形,将节点“b”表示为圆形。这在networkx和Python中可能吗?
我最初的计划是声明两个图:
AG=nx.DiGraph()
BG=nx.DiGraph()
然后根据节点的类型向每个节点添加节点 - 因此我将迭代 XML,如果节点是“a 类型”,则将其添加到 AG 并如果是 B 型,则将其添加到BG
现在我可以显示每个图表并定义其形状 - 通常:
nx.draw_networkx(EG, font_family="Arial", font_size=10,
node_size=2000, node_shape="s", node_color='r', labels=node_labels, with_labels=True)
它崩溃的部分是当我尝试在“a”节点和“b”节点之间添加边时。
关于如何运作有什么想法吗?
最佳答案
将整个数据集保留在一个图中:
G = nx.DiGraph()
还保留 A_nodes 和 B_nodes 的列表。然后你可以使用
选择 G 的子图AG = G.subgraph(A_nodes)
BG = G.subgraph(B_nodes)
由于所有节点都在 G 中,因此您现在可以在 A 节点和 B 节点之间添加边:
G.add_edge(a_node, b_node)
关于python - 是否可以在 Networkx 图中混合不同形状的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44801216/