向图形添加属性(聚类系数)并绘制图形,节点大小与 CC 成正比

Add attribute (clustering coefficient) to graph and plot graph, with node size proportional to CC

我有一个图表:

from networkx.generators.random_graphs import *
from networkx.algorithms.cluster import *

G = fast_gnp_random_graph(20,0.4)

我为每个节点计算聚类:

clust_net = clustering(G)
    cluster = []
    for a in clust_net:
        cluster.append(clust_net[a])

这会产生一个数组。然后我创建一个字典将聚类系数链接到节点:

node_cluster = dict(zip(G.nodes(), cluster))

我如何使用它来制作 node_size 依赖于聚类系数的图表?

您可以为 nx.draw() 使用 node_size 关键字参数。这需要一个值列表,用于缩放图中的节点。

你也可以稍微简化你的代码,因为现在,当你计算node_cluster时,它和clustering(G)的结构完全一样。

下面的示例为图表中的每个节点设置一个属性 'cc',然后绘制图表,根据该属性的值按比例缩放节点大小。

import networkx as nx

G = nx.fast_gnp_random_graph(20,0.4)

nx.set_node_attributes(G, nx.clustering(G), "cc")

nx.draw(G,
        node_size=[G.nodes[x]['cc']*1000 for x in G.nodes],
        with_labels=True)

输出:

>>> nx.clustering(G)
{0: 0.4,
 1: 0.37777777777777777,
 2: 0.3333333333333333,
 3: 0.26666666666666666,
 4: 0.3787878787878788,
 5: 0.34545454545454546,
 6: 0.4,
 7: 0.1,
 8: 0.26666666666666666,
 9: 0.4666666666666667,
 10: 0.2857142857142857,
 11: 0.4444444444444444,
 12: 0.3,
 13: 0.4,
 14: 0.6190476190476191,
 15: 0.4,
 16: 0.4,
 17: 0.3888888888888889,
 18: 0.7333333333333333,
 19: 0.2857142857142857}