Networkx: восстановить случайный геометрический граф с ранее сохраненными значениями узлов и ребрами в файле - PullRequest
0 голосов
/ 05 декабря 2011

Я генерирую случайный геометрический график и сохраняю узел и ребра информация, используя write_adjlist в файл.

Код: 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. Может ли кто-нибудь помочь мне решить эту проблему?

1 Ответ

2 голосов
/ 05 декабря 2011

Рассмотрим следующий интерактивный сеанс:

>>> 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']
>>>

При чтении списка узлов из файла идентификаторы узлов обрабатываются как строки, а не числа.Таким образом, вы получаете сообщение об ошибке, потому что пытаетесь построить два несуществующих узла 1 и 2.Измените их на строки ('1' и '2'), и все должно работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...