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

如何将Seaborn displot的Y轴设置为实际百分比显示

实现Seaborn displot KDE图Y轴显示百分比

当然可以实现!我来帮你把Seaborn displot生成的KDE图Y轴改成实际百分比显示,这样你的受众能更直观地理解数据分布的占比情况,完全能达到你在Excel里的效果~

原理说明

KDE图默认的Y轴是概率密度,它的曲线下面积总和为1(代表100%的样本)。我们只需要把密度值乘以100,就能将其转换为百分比,再配合刻度格式化,就能让Y轴显示实际的百分比数值。

完整代码示例

import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter

# 加载泰坦尼克号数据集
data = sns.load_dataset('titanic')

# 绘制带hue的KDE分布图
p = sns.displot(data=data, x='age', hue='sex', height=4, kind='kde')

# 定义一个将密度值转换为百分比的格式化函数
def format_percent(y, pos):
    # 将密度值乘以100,保留1位小数并添加%符号
    return f"{y * 100:.1f}%"

# 遍历displot返回的所有子图(这里只有单个子图)
for ax in p.axes.flat:
    # 为Y轴设置百分比格式化器
    ax.yaxis.set_major_formatter(FuncFormatter(format_percent))
    # 更新Y轴的标签为"Percentage"
    ax.set_ylabel('Percentage')

plt.show()

代码解释

  1. FuncFormatter的作用:它是Matplotlib提供的自定义刻度格式化工具,我们通过format_percent函数把每个Y轴刻度的密度值乘以100,转换成带%符号的百分比文本。
  2. 遍历子图:displot返回的是一个FacetGrid对象,包含所有子图,通过p.axes.flat遍历可以确保每个子图的Y轴都被正确调整(哪怕你后续扩展成多个子图的情况也适用)。
  3. 标签更新:把默认的Y轴标签(比如"Density")改成"Percentage",让图表更清晰。

这样调整后,Y轴就会显示类似2.5%、5.0%这样的实际百分比,完全符合你的受众需求,而且Python实现的好处是可以批量处理更多数据,自动化生成图表~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 00:42:45