networkx add_node具体位置(networkx add_node with speci

2019-06-26 18:04发布

我还与networkx我要添加多种不同位置的节点的初学者,我用下面的代码

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字典设置在开始自己的立场。

如何可以在一个特定的位置x和y使用add_node将节点添加到的图表()

Answer 1:

我不是你想要完成的任务完全确定,但我把它解释为你想节点添加到图中,在所期望的位置吸引他们仍然能够访问他们的图形对象。

既然你不节点添加到图表,这将是一个开始:

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



Answer 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)

UPDATE

添加绘图



文章来源: networkx add_node with specific position