如何将节点添加到networkx中的现有图形?

时间:2015-06-16 05:31:59

标签: python graph beautifulsoup nodes networkx

考虑以下代码:

 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,当我迭代一组网址时,这两个值会发生变化。如何在提取内容时维护一个图表并添加节点?

请帮忙。提前致谢。

2 个答案:

答案 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()来解决此问题。

这是我的第一个和最后一个数字:

enter image description here enter image description here