我仍然是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')
Run Code Online (Sandbox Code Playgroud)
但是当我想访问Graph X时,如果我输入X.node它会返回一个空列表,如果我想添加更多节点,我必须使用pos字典在开头设置它们的位置.
如何使用add_node()将节点添加到特定位置x和y中的图形
Ari*_*ric 38
您可以使用以下方法设置单个节点位置,然后提取绘制时要使用的"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)
Run Code Online (Sandbox Code Playgroud)
UPDATE
添加绘图
Mae*_*ler 30
我不完全确定你想要完成什么,但我将其解释为你想要将图形添加到图形中,将它们绘制在所需位置并仍然能够在图形对象中访问它们.
由于您没有将节点添加到图表中,这将是一个开始:
X.add_nodes_from(pos.keys())
Run Code Online (Sandbox Code Playgroud)
然后,您不必在绘制图形时指定节点列表,因此在添加新节点时不必更改两个不同位置的代码.
如果您希望节点的位置作为节点属性,您也可以这样做:
for n, p in pos.iteritems():
X.node[n]['pos'] = p
Run Code Online (Sandbox Code Playgroud)
请注意,绘制图形时这些位置不会用作位置,必须明确设置.然后,您可以绘制并显示图形:
nx.draw(X, pos)
plt.show()
Run Code Online (Sandbox Code Playgroud)
假设你做了导入from matplotlib import pyplot as plt.