在 Python 中的 Networkx 上按照特定顺序绘制节点? 结果

问题描述

我提出的问题没有找到任何答案,可能是因为我没有使用正确的词来表达它,所以我会试着问她希望有人能帮助我,在此先感谢。 我正在尝试使用在 Debian 上运行的 NetworkX 库 2.5 版和 Python 3.9 绘制图形。 我的图由一个节点“s”、一个节点“t”、多个节点 t_i 、 1

是否可以像下图那样绘制它(当然包括边缘)?我没有找到排序节点显示方式的方法...

enter image description here

非常感谢!

解决方法

您可以将 multipartite_layout 用于您想要的位置。您需要在节点属性(参见下面的 level)中指定节点应属于哪个组,然后检索给定级别中的布局。添加边不会改变节点的位置,所以我没有将它们添加到以下最小示例中:

import networkx as nx
import matplotlib.pylab as pl

G = nx.Graph()

G.add_node("s",level=0)
G.add_node("t_1",level=1)
G.add_node("t_2",level=1)
G.add_node("v_1",level=2)
G.add_node("v_2",level=2)
G.add_node("v_3",level=2)
G.add_node("t",level=3)

pos = nx.multipartite_layout(G,subset_key="level")

nx.draw(G,pos,with_labels=True)
pl.show()

结果

enter image description here