我已经分析了我的图,并获得了特征向量中心性。(如下所示)
cit = nx.read_edgelist('Cit-HepTh.txt', create_using=nx.DiGraph(), nodetype=int)
(...compute centrality to a dict...)
现在我想根据这个字典绘制一个图,其中不同的节点基于它们的中心性具有不同的大小。
我见过一个绘制不同颜色的示例(也许我认为有一种类似的方法来绘制不同大小
node_colours = []
for node in nodes:
if node < 5:
node_colours.append('blue')
else:
node_colours.append('green')
#draw graph, substitute the single colour with ur list of colours
nx.draw_spring(G, k=1, node_color = node_colours,
node_size = 200, font_size = 6, with_labels = True)
我正在尝试绘制一个包含27000+节点的大图,但是为networkX绘制这样的图似乎相当慢。所以我只想画前100名(最高的eigenVector中心度)。你有什么例子或建议吗?
发布于 2018-07-22 10:15:08
这些代码行上的一些内容(虽然使用27k+节点很快,但很脏):
在通过以下方式获得每个节点的中心性后:
eigen_centrality = nx.eigenvector_centrality(G)
all_nodes = [(node,eigen_centrality(node)) for node in eigen_centrality]
按中心度查找前100个节点:
top_100_nodes = [n for (n,c) in all_nodes if c in np.argsort(c)[-100:]]
然后,创建前100个节点的子图:
G1 = G.subgraph(top_100_nodes)
然后绘制图形:
top_100_centrality = nx.eigenvector_centrality(G1)
nx.draw_spring(G1, k =1, node_color = node_colours, \
node_size = [top_100_centrality(n) for n in G1.nodes()],
font_size = 6, with_labels = True)
https://stackoverflow.com/questions/51461382
复制相似问题