擅长:python、mysql、java
<p>NetworkX已经有了一个功能来实现这一点</p>
<p>它被称为<a href="https://networkx.github.io/documentation/latest/reference/generated/networkx.drawing.layout.bipartite_layout.html" rel="noreferrer">networkx.drawing.layout.bipartite_layout</a></p>
<p>您可以使用它生成字典,该字典通过<code>pos</code>参数提供给绘图函数,如<code>nx.draw</code>,如下所示:</p>
<pre><code>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
</code></pre>
<p>其中<code>B</code>是完整的二部图(表示为常规的networkx图),而<code>B_first_partition_nodes</code>是希望放置在第一个分区中的节点</p>
<p>这将生成一个数字位置字典,并将其传递给绘图函数的<code>pos</code>参数。也可以指定布局选项,请参见<a href="https://networkx.github.io/documentation/latest/reference/generated/networkx.drawing.nx_pylab.draw_networkx.html#networkx.drawing.nx_pylab.draw_networkx" rel="noreferrer">main page</a></p>
<p>强制性示例输出:
<a href="https://i.stack.imgur.com/nUHZw.png" rel="noreferrer"><img src="https://i.stack.imgur.com/nUHZw.png" alt="enter image description here"/></a></p>