是否可以在网络图中混合不同形状的节点?

时间:2017-06-28 11:32:12

标签: python nodes networkx edges

我有一个包含两种不同类型节点的XML文件(我们称之为节点'a'和节点'b')。他们是连接的。我想将节点'a'表示为 - 比如说一个正方形,节点'b'作为一个圆。这在networkx和Python中是否可行?

我最初的计划是宣布两张图:

AG=nx.DiGraph()
BG=nx.DiGraph()

然后根据它的节点类型为每个节点添加节点 - 所以我将遍历XML,如果节点是'type 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'节点之间添加边时。

关于如何运作的任何想法?

1 个答案:

答案 0 :(得分:0)

将整个数据集保存在一个图表中:

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)