我面临的问题是:
假设我们有一些课程(不重要的是它):
class Node: ...
...
我现在需要的是创建这个类的几个实例;所有的名字。 我尝试了几件事,这是一次尝试,这显然是行不通的。只是为了弄清楚我想要实现的目标:
for i in range(number_of_instances):
"name"+str(i+1) = Node()
我需要为所有这些对象命名,以便稍后将它们放入列表中。实际上,它是包含图表中所有节点的列表。该图表将使用 networkx 模块制作。我需要能够以某种方式区分列表中的节点。这就是我需要这个名字的原因。
my_graph = networkx.Graph()
for i in range(number_of_nodes):
my_graph.add_node(Node(), name = str(i+1))
执行此操作后,my_graph.nodes()
列表以某种方式混淆了节点的顺序。因此它不符合将节点添加到图表的顺序。
因此,我不再了解如何准确区分节点。
修改
鉴于图表的拉普拉斯,我设置了所有内容然后绘制图形。
name_dict = nx.get_node_attributes(my_graph, "name")
pos = nx.spring_layout(my_graph)
nx.draw(my_graph, pos, with_labels=False)
nx.draw_networkx_labels(my_graph, pos, name_dict)
plt.show()
然而,这不会导致正确的标签。
答案 0 :(得分:1)
您不需要名称,只需要引用。一个简单的解决方案是将引用放在字典中:
node = {}
for i in range(number_of_instances):
node[i] = Node()
...
for i in range(number_of_nodes):
my_graph.add_node(node[i], name="node %s" % i)