如何使用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()
标签:python,networkx,bipartite 来源: https://codeday.me/bug/20190702/1355585.html