编程语言
首页 > 编程语言> > 如何使用python networkX包显示二分图?

如何使用python networkX包显示二分图?

作者:互联网

如何在python networkX包中显示一个二分图,左边一列中的一个节点和右边另一个类中的节点?

我可以创建一个图形并像这样显示它

B = nx.Graph()
B.add_nodes_from([1,2,3,4], bipartite=0) # Add the node attribute "bipartite"
B.add_nodes_from(['a','b','c'], bipartite=1)
B.add_edges_from([(1,'a'), (1,'b'), (2,'b'), (2,'c'), (3,'c'), (4,'a')])
nx.draw(B)
plt.show()

但是我希望列中左边的节点1,2,3,4和右边一列中的节点’a’,’b’,’c’,边缘在它们之间.

解决方法:

您需要自己设置每个节点的位置:

B = nx.Graph()
B.add_nodes_from([1,2,3,4], bipartite=0) # Add the node attribute "bipartite"
B.add_nodes_from(['a','b','c'], bipartite=1)
B.add_edges_from([(1,'a'), (1,'b'), (2,'b'), (2,'c'), (3,'c'), (4,'a')])

# Separate by group
l, r = nx.bipartite.sets(B)
pos = {}

# Update position for node from each group
pos.update((node, (1, index)) for index, node in enumerate(l))
pos.update((node, (2, index)) for index, node in enumerate(r))

nx.draw(B, pos=pos)
plt.show()

enter image description here

标签:python,networkx,bipartite
来源: https://codeday.me/bug/20190702/1355585.html