2011-12-05 36 views
0

我生成随机几何图形和存储使用write_adjlist到文件节点和边缘 信息。Networkx:与先前存储的节点值和边缘重新生成随机几何图形文件

代码:python1.py

G=nx.random_geometric_graph(10,0.5) 
filename = "ipRandomGrid.txt" 
fh=open(filename,'wb') 
nx.write_adjlist(G, fh) 
nx.draw(G) 
plt.show() 

现在从第二个文件,我试图生成与 同一节点图和边的信息。我使用read_adjlist找到 信息。

代码:python2.py

filename = "ipRandomGrid.txt" 
fh=open(filename, 'rb') 
G=nx.Graph() 
G=nx.read_adjlist("ipRandomGrid.txt") 
pos=nx.random_layout(G) 
nx.draw_networkx_nodes(G,pos,nodelist=[1,2],node_color='b') 
nx.draw(G) 
plt.show() 

它显示下面的错误我。

raise nx.NetworkXError('Node %s has no position.'%e) 
networkx.exception.NetworkXError: Node 1 has no position. 

我认为问题是与pos变量。有人能帮我解决这个问题吗? ?

回答

2

考虑以下交互式会话:

>>> import networkx as nx 
>>> G = nx.random_geometric_graph(10, 0.5) 
>>> with open("junk.txt", "wb") as f: 
... nx.write_adjlist(G, f) 
... 
>>> G.nodes() 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> with open("junk.txt", "rb") as f: 
... G2 = nx.read_adjlist(f) 
... 
>>> G2.nodes() 
[u'1', u'0', u'3', u'2', u'5', u'4', u'7', u'6', u'9', u'8'] 
>>> 

当从文件读取节点列表,节点的身份被视为字符串,而不是数字。因此,你因为你想要绘制两个不存在的节点12得到一个错误。他们更改为字符串('1''2'),它应该工作的罚款。

+0

我改成了字符串和它现在的工作。但我认为由于pos = nx.random_layout(G)语句,我没有得到与预期相同的图。所以我没有正确导入我在第一个代码中导出的节点值和边缘信息。任何想法如何正确导入? –

+0

@KunjanSheth如果您有关于如何使用NetworkX,张贴作为另一个问题,希望不是在您的评论更准确地说另一个问题。 Stackoverflow是一个问答网站,而不是论坛。 –

相关问题