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

如何用Seaborn kdeplot按gender分组绘制带attrition_flag区分的密度图

按Gender分组生成带Attrition Flag区分的密度图子图解决方案

核心方案:使用Seaborn的FacetGrid实现分组子图

FacetGrid是Seaborn专门用于按类别变量生成子图网格的工具,比PairGrid更适配你这种单变量分组可视化的需求,直接用它就能实现和hist(by='gender')类似的子图效果,同时保留attrition_flag的区分。

完整代码示例

import seaborn as sns
import matplotlib.pyplot as plt

# 初始化FacetGrid,按gender列分成子图,设置画布大小
g = sns.FacetGrid(data=customers, col='gender', figsize=[10,6])

# 在每个子图上绘制kdeplot,保留你原来的参数设置
g.map_dataframe(sns.kdeplot, x="total_trans_ct", hue="attrition_flag", 
                fill=True, common_norm=False, alpha=0.4)

# 添加跨子图的统一图例
g.add_legend()

# 调整子图间距,避免标签重叠
plt.tight_layout()
plt.show()

关键说明

  • col='gender'参数会自动按gender的唯一值(M/F)生成并排子图,和hist(by='gender')的布局逻辑完全一致
  • map_dataframe方法会将sns.kdeplot应用到每个子图对应的gender数据子集上,自动实现分组筛选
  • 调用add_legend()是因为默认map_dataframe不会生成统一图例,手动添加后能清晰区分不同attrition_flag的曲线
  • 完全保留了你原来的fill=True、common_norm=False、alpha=0.4参数,确保密度图的填充效果和分组归一化逻辑不变

为什么PairGrid会报错?

PairGrid是为多变量两两组合可视化设计的(比如散点图矩阵),它的核心逻辑是处理变量间的关系,而非单变量按类别分组的子图。用它实现单变量分组密度图属于场景不匹配,因此会出现报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:16:00