В простом графике, как это:NetworkX: как назначить координаты узлов как атрибут?
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
G.add_edge('0','1')
G.add_edge('1','2')
G.add_edge('2','0')
G.add_edge('0','3')
G.add_edge('1','4')
G.add_edge('5','0')
pos={'0':(1,0),'1':(1,1),'2':(2,3),'3':(3,2),'4':(0.76,1.80),'5':(0,2)} #node:(x,y)
nx.draw(G,pos=pos,with_labels=True)
plt.show()
при попытке присвоить каждому узлу список атрибутов, содержащих идентификатор узла и его (x,y)
координаты, как это:
for i,n in enumerate(G.nodes()):
G.nodes()[i]['weight']=[G.nodes()[i],pos[n]] #List of attributes
я получаю следующее сообщение об ошибке :
Traceback (most recent call last):
File "<ipython-input-47-0f9ca94eeefd>", line 2, in <module>
G.nodes()[i]['weight']=[G.nodes()[i],pos[n]]
TypeError: 'str' object does not support item assignment
Что здесь не так?
Как узнать созданные им координаты узла и сохранить их для дальнейшего использования в другом графике? – Sigur
@Sigur координаты узла в этом примере были составлены. Это зависит от проблемы, которую вы пытаетесь решить, но вы можете назначить узлы координаты, которые вы хотите - вы сами решаете! Они могут храниться в словаре, который затем может быть сохранен как [pickle] (https://docs.python.org/3/library/pickle.html). Это позволяет импортировать и распаковывать рассол, поэтому вы можете использовать его с другим графиком позже. Надеюсь, это поможет. Если у вас есть более конкретная проблема, задайте новый вопрос со всеми подробностями. – FaCoffee
Позвольте мне немного рассказать об этом. Более или менее то, что я хочу, это последовательность графиков с одинаковым набором вершин, но ребра появляются в соответствии с некоторым параметром. Но позиция набора вершин создается сначала каким-то макетом, а затем для других графиков я бы хотел использовать их. Но каждый раз, когда я запускаю код, график меняется! – Sigur