networkx添加具有特定位置的节点

2024-05-15 02:41:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我还是个网络新手 我想在不同的位置添加多种类型的节点,我使用了以下代码

pos = {0: (40, 20), 1: (20, 30), 2: (40, 30), 3: (30, 10)} 
X=nx.Graph()
nx.draw_networkx_nodes(X,pos,node_size=3000,nodelist=[0,1,2,3],node_color='r')

但是当我想访问图X时,如果我键入X.node,它将返回一个空列表 如果我想添加更多的节点,我必须在开始使用pos字典设置它们的位置。

如何使用add_node()将节点添加到特定位置x和y的图形中


Tags: 代码pos网络networkxnodesize节点graph
2条回答

可以使用以下方法设置单个节点位置,然后提取要在绘制时使用的“pos”字典。

In [1]: import networkx as nx

In [2]: G=nx.Graph()

In [3]: G.add_node(1,pos=(1,1))

In [4]: G.add_node(2,pos=(2,2))

In [5]: G.add_edge(1,2)

In [6]: pos=nx.get_node_attributes(G,'pos')

In [7]: pos
Out[7]: {1: (1, 1), 2: (2, 2)}

In [8]: nx.draw(G,pos)

更新

添加绘图

enter image description here

我不完全确定您想要完成什么,但我将其解释为您想要向图中添加节点,在所需位置绘制它们,并且仍然能够在图对象中访问它们。

由于没有将节点添加到图表中,这将是一个开始:

X.add_nodes_from(pos.keys())

然后在绘制图形时不必指定节点列表,因此在添加新节点时不必在两个不同的位置更改代码。

如果要将节点的位置作为节点属性,也可以执行以下操作:

for n, p in pos.iteritems():
    X.node[n]['pos'] = p

请注意,在绘制图形时,这些位置不会用作位置,必须显式设置。然后,可以使用以下命令绘制和显示图形:

nx.draw(X, pos)
plt.show()

假设您做了导入from matplotlib import pyplot as plt

相关问题 更多 >

    热门问题