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

NetworkX绘图:如何按余弦相似度区分边色并设置短节点标签

NetworkX绘图问题解决方案

你的边列表来源数据框示意图:
示意图

按余弦相似度设置边颜色

不需要修改原始图结构,只需要在绘图前遍历所有边,根据边存储的CosineSimilarity属性逐一生成对应颜色值,把颜色列表传给draw_networkx的edge_color参数即可。阈值判断逻辑可自行调整,颜色值支持十六进制色值、RGB元组、matplotlib内置颜色名等格式。

设置自定义短节点标签

绘图时不需要修改原始节点存储的长句内容,只要提前构造「原始节点名: 待显示短标签」的映射字典,传给draw_networkx的labels参数,就会在绘图时自动替换显示为你设置的短文本。你可以选择自动给节点生成序号标签,也可以手动给每个节点指定自定义的短名称。

完整参考代码

import networkx as nx

# 保留你原有的建图逻辑
G_test = nx.from_pandas_edgelist(
    n1, 
    'Sentence0', 
    'Sentence1', 
    edge_attr='CosineSimilarity', 
    create_using=nx.Graph()
)
pos = nx.spring_layout(G_test)

# 生成边颜色列表
edge_color_list = []
for _, _, edge_attr in G_test.edges(data=True):
    # 相似度<0.5的边设为浅灰色,其余设为深蓝色,可按需替换颜色值
    if edge_attr['CosineSimilarity'] < 0.5:
        edge_color_list.append('#d0d0d0')
    else:
        edge_color_list.append('#2563eb')

# 生成节点短标签映射
# 自动编号方案:按节点遍历顺序生成N0、N1...格式的标签
custom_labels = {node: f"N{i}" for i, node in enumerate(G_test.nodes())}
# 手动指定方案示例(按需替换成你自己的映射关系即可):
# custom_labels = {
#     "原始长句子文本1": "句1",
#     "原始长句子文本2": "句2"
# }

# 传入自定义参数绘图
nx.draw_networkx(
    G_test, 
    pos=pos,
    with_labels=True,
    labels=custom_labels,
    edge_color=edge_color_list,
    node_size=280,
    font_size=8
)

补充提示:如果需要实现相似度越高边颜色越深的连续渐变效果,可以直接把所有边的余弦相似度值组成列表传入edge_color,同时搭配edge_cmap参数指定对应色阶即可,不需要手动写阈值判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:45:45