You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在绘制degree_centrality图时筛选指定数值范围的节点

筛选指定度中心性范围的节点并可视化

步骤1:筛选符合条件的节点及其度中心性值

通过字典推导式从全量节点的度中心性结果中,筛选出数值在0.60到0.64之间的节点:

# 获取所有节点的度中心性
all_degree = nx.degree_centrality(G)
# 筛选0.60 ≤ 度中心性 ≤ 0.64的节点
filtered_degree = {node: score for node, score in all_degree.items() if 0.60 <= score <= 0.64}

步骤2:可视化筛选后的节点

根据需求选择以下两种可视化方式:

方式一:仅展示筛选节点及其关联边

如果需要只呈现筛选节点构成的子图,先提取子图再调用原绘图函数:

# 提取筛选节点对应的子图
G_filtered = G.subgraph(filtered_degree.keys())
# 使用原布局绘制子图
draw(G_filtered, pos, filtered_degree, 'Degree Centrality (0.60-0.64)')

方式二:保留全图结构,高亮筛选节点

如果需要保留完整网络结构,仅突出显示目标节点,可以修改绘图函数:

def draw_filtered(G, pos, filtered_measures, measure_name):
    # 先绘制所有非目标节点为灰色
    nx.draw_networkx_nodes(G, pos, node_size=250, node_color='lightgray', 
                           nodelist=[n for n in G.nodes() if n not in filtered_measures.keys()])
    # 绘制目标节点,用度中心性值着色
    nodes = nx.draw_networkx_nodes(G, pos, node_size=300, cmap=plt.cm.plasma, 
                                   node_color=list(filtered_measures.values()),
                                   nodelist=filtered_measures.keys())
    nodes.set_norm(mcolors.SymLogNorm(linthresh=0.01, linscale=1, base=10))
    # 绘制所有边
    nx.draw_networkx_edges(G, pos)
    # 添加标题和颜色条
    plt.title(measure_name)
    plt.colorbar(nodes)
    plt.axis('off')
    plt.show()

# 调用修改后的绘图函数
draw_filtered(G, pos, filtered_degree, 'Degree Centrality (0.60-0.64 Highlighted)')

简化调用方式(仅显示筛选节点,保留全图边)

如果不需要调整非目标节点样式,直接将筛选结果传入原draw函数即可:

draw(G, pos, filtered_degree, 'Degree Centrality (0.60-0.64)')

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:35:24