networkx 中的标记节点
Labelling nodes in networkx
我正在尝试从 URL 中提取一组值。该集合具有唯一的数字列表。此列表中的元素数应等于节点数。所以这些节点得到的标签应该来自提取的列表。如何使用 networkx 执行此操作?
我遇到了这个标记节点的函数:
nx.draw_networkx_labels(G,pos,labels,font_size=16)
这里,'labels'需要是dict类型。
import networkx as nx
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
soup = BeautifulSoup(br.response().read())
counter = 0
idvalue = []
doTags = soup.find_all("div", {"class":"classname"})
for tag in doTags:
id = tag.find_next("span",{"class":"classname"})
print id.string
idvalue.append(id.string)
counter +=1
print counter
G = nx.Graph()
H=nx.path_graph(counter+1)
G.add_nodes_from(H)
nx.draw(G)
nx.draw_networkx_labels(G,labels,font_size=16)
plt.show()
有什么方法可以将 'idvalue' 转换为 dict 吗?或者 networkx 中是否有任何其他功能可以使这项工作更容易?请帮忙。提前致谢。
您可以使用 list comprehensions and dict()
函数
将列表 idvalue
转换为字典
labels = dict( [ value for value in enumerate(idvalue) ] )
例子
>>> lst = ['a', 'b', 'c', 'd']
>>> dict([ x for x in enumerate(lst) ])
{0: 'a', 1: 'b', 2: 'c', 3: 'd'}
备注
- 您在程序中使用的
counter
变量非常无用,因为您可以从列表长度中获取该值。
也就是你可以这样写
H = nx.path_graph( len(idvalue) )
我正在尝试从 URL 中提取一组值。该集合具有唯一的数字列表。此列表中的元素数应等于节点数。所以这些节点得到的标签应该来自提取的列表。如何使用 networkx 执行此操作?
我遇到了这个标记节点的函数:
nx.draw_networkx_labels(G,pos,labels,font_size=16)
这里,'labels'需要是dict类型。
import networkx as nx
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
soup = BeautifulSoup(br.response().read())
counter = 0
idvalue = []
doTags = soup.find_all("div", {"class":"classname"})
for tag in doTags:
id = tag.find_next("span",{"class":"classname"})
print id.string
idvalue.append(id.string)
counter +=1
print counter
G = nx.Graph()
H=nx.path_graph(counter+1)
G.add_nodes_from(H)
nx.draw(G)
nx.draw_networkx_labels(G,labels,font_size=16)
plt.show()
有什么方法可以将 'idvalue' 转换为 dict 吗?或者 networkx 中是否有任何其他功能可以使这项工作更容易?请帮忙。提前致谢。
您可以使用 list comprehensions and dict()
函数
idvalue
转换为字典
labels = dict( [ value for value in enumerate(idvalue) ] )
例子
>>> lst = ['a', 'b', 'c', 'd']
>>> dict([ x for x in enumerate(lst) ])
{0: 'a', 1: 'b', 2: 'c', 3: 'd'}
备注
- 您在程序中使用的
counter
变量非常无用,因为您可以从列表长度中获取该值。
也就是你可以这样写
H = nx.path_graph( len(idvalue) )