如何基于中心度绘制图形?

2024-10-01 00:23:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我分析了我的图,得到了特征向量的中心性。(如下所示)

cit = nx.read_edgelist('Cit-HepTh.txt', create_using=nx.DiGraph(), nodetype=int)
(...compute centrality to a dict...)

现在我想根据这个dict绘制一个图,其中不同的节点根据其中心度有不同的大小。
我看过一个画不同颜色的例子(也许我认为有一种类似的方法可以画出不同的尺寸

^{pr2}$

我试图画一个有27000多个节点的大型图,但是对于networkX绘制这样一个图似乎很慢。所以我只想画出前100个(最高特征向量中心度)。 你有什么例子或建议吗?在


Tags: txtread节点create绘制中心dict例子
1条回答
网友
1楼 · 发布于 2024-10-01 00:23:19

这些行中的一些内容(虽然有27k+个节点,但速度很快而且很脏):

通过以下方法获得每个节点的中心度:

 eigen_centrality = nx.eigenvector_centrality(G)
 all_nodes = [(node,eigen_centrality(node)) for node in eigen_centrality]

按中心度查找前100个节点:

^{pr2}$

然后,创建前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)

相关问题 更多 >