she*_*158 13 matplotlib bipartite networkx
B.add_nodes_from(a, bipartite=1)
B.add_nodes_from(b, bipartite=0)
nx.draw(B, with_labels = True)
plt.savefig("graph.png")
Run Code Online (Sandbox Code Playgroud)
我得到下图.如何让它看起来像一个合适的二分图?

mdm*_*dml 20
你可以做这样的事情,从特定x坐标的每个分区中绘制节点:
X, Y = bipartite.sets(B)
pos = dict()
pos.update( (n, (1, i)) for i, n in enumerate(X) ) # put nodes from X at x=1
pos.update( (n, (2, i)) for i, n in enumerate(Y) ) # put nodes from Y at x=2
nx.draw(B, pos=pos)
plt.show()
Run Code Online (Sandbox Code Playgroud)

关键是dict为nx.draw pos参数创建,即:
以节点为键,位置为值的字典.
查看文档.
NetworkX已经具有执行此操作的功能。
它称为networkx.drawing.layout.bipartite_layout
您可以使用它来生成字典,该字典nx.draw通过诸如此类的pos参数馈送到绘图函数中,如下所示:
nx.draw_networkx(
B,
pos = nx.drawing.layout.bipartite_layout(B, B_first_partition_nodes),
width = edge_widths*5) # Or whatever other display options you like
Run Code Online (Sandbox Code Playgroud)
B完整的二部图在哪里(以常规networkx图表示),以及B_first_partition_nodes是您希望放置在第一个分区中的节点。
这将生成一个数字位置字典,该字典将传递到pos绘图函数的参数。您也可以指定布局选项,请参见主页。
| 归档时间: |
|
| 查看次数: |
8288 次 |
| 最近记录: |