考虑以下代码:
G = nx.DiGraph()
H=nx.path_graph(counter+1)
G.add_nodes_from(H)
labels = dict([ x for x in enumerate(idvalue) ])
l =len(idvalue)
labels[l]=userid
for node in H:
G.add_edge(node,l)
pos=nx.spring_layout(G)
nx.draw(G, pos=pos, node_color='g', node_size=20, with_labels=False)
nx.draw_networkx_labels(G,pos,labels,font_size=16)
plt.show()
在这里,我正在提取userid
&来自使用漂亮汤的网址的idvalue
,当我迭代一组网址时,这两个值会发生变化。如何在提取内容时维护一个图表并添加节点?
请帮忙。提前致谢。
答案 0 :(得分:0)
您已经在使用add_edge()
,如果它们不存在,它们也会添加节点。
如果您只想添加没有附加边的节点,可以使用add_node()
答案 1 :(得分:0)
你的问题不在于创建多个图表。相反,它是你多次绘制相同的图形,每次它看起来不同。
import networkx as nx
import matplotlib.pyplot as plt
G=nx.DiGraph()
G.add_edge(1,2)
labels = {1:1, 2:2}
for ctr in range(4):
pos=nx.spring_layout(G)
nx.draw(G, pos=pos, node_color='g', node_size=20, with_labels=True)
nx.draw_networkx_labels(G,pos,labels,font_size=16)
plt.savefig('fig'+str(ctr)+'.png')
你应该看到它每次绘图时看起来都不一样。那是因为默认情况下spring_layout内置了随机性。由于它每次都在同一个图中绘制,看起来你会得到很多不同的图形(注意,如果你在交互式环境中这样做,它如何处理重新绘制在某种程度上取决于在那个环境上)。您可以在绘图之前添加plt.clf()
来解决此问题。
这是我的第一个和最后一个数字: