在 Python 中按照 Networkx 上的特定顺序绘制节点?
Draw nodes following a specific order on Networkx in Python?
我问的问题没有找到任何答案,可能是因为我没有用正确的词来表达它,所以我会尝试问她希望有人能帮助我,在此先感谢。
我正在尝试使用 NetworkX 库 2.5 版在 Debian 上使用 Python 3.9、运行 绘制图形。
我的图表包含一个节点“s”、一个节点“t”、多个节点 t_i、1 <= i <= n 和多个节点 v_j、1 <= j <= m。有边连接“s”和t_i个节点,一些t_i和v_j个节点之间,v_j和“t”个节点之间
能不能画成下图这样(当然包括边)?我没有找到一种方法来排序节点的显示方式...
非常感谢!
您可以使用 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()
结果
我问的问题没有找到任何答案,可能是因为我没有用正确的词来表达它,所以我会尝试问她希望有人能帮助我,在此先感谢。 我正在尝试使用 NetworkX 库 2.5 版在 Debian 上使用 Python 3.9、运行 绘制图形。 我的图表包含一个节点“s”、一个节点“t”、多个节点 t_i、1 <= i <= n 和多个节点 v_j、1 <= j <= m。有边连接“s”和t_i个节点,一些t_i和v_j个节点之间,v_j和“t”个节点之间
能不能画成下图这样(当然包括边)?我没有找到一种方法来排序节点的显示方式...
非常感谢!
您可以使用 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()