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

Seaborn kdeplot色调不一致及图例标题移除问题求助

解决方案

修改后的完整代码

# 提前定义固定的性别顺序和颜色映射
gender_order = ['male', 'female']
gender_colors = {'male': 'blue', 'female': 'orange'}

for province in provinces:
    fig, ax = plt.subplots()
    # 筛选有效数据(排除未知性别)
    province_data = df[(df['gender'] != 2) & (df['province'] == province)]
    # 绘制密度图,固定顺序和颜色
    sns.kdeplot(data=province_data, x='distance', hue='gender_legend',
                hue_order=gender_order, palette=gender_colors, ax=ax)
    # 设置坐标轴和标题
    ax.set(xlabel='Distance (km)', ylabel='density', title=province)
    # 移除图例标题
    ax.get_legend().set_title('')
    plt.show()

问题拆解与解决思路

1. 色调与图例顺序不稳定

问题根源是每个省份的子集数据中,gender_legend的类别出现顺序不固定,Seaborn默认会根据当前数据的类别顺序自动分配颜色和图例排序。

解决方式:

  • 用hue_order参数强制指定类别顺序(比如固定先male后female),保证所有图的图例排列一致
  • 用palette参数手动绑定每个性别对应的颜色,彻底避免颜色颠倒的情况

2. 移除图例标题

直接获取图例对象并清空标题即可,也可以选择手动创建图例:

  • 方法1(推荐):绘图后执行ax.get_legend().set_title('')
  • 方法2:绘图时关闭自动图例,手动创建无标题图例:
    sns.kdeplot(..., legend=False, ax=ax)
    ax.legend(title='', labels=gender_order)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:30:24