如何修改 sns.histplot 中的核密度估计线

Man*_*rra 6 python seaborn displot kdeplot histplot

我正在创建一个直方图(频率与计数),并且我想添加不同颜色的核密度估计线。我怎样才能做到这一点?例如我想改变颜色

sns.histplot(data=penguins, x="flipper_length_mm", kde=True)

在此输入图像描述

示例取自https://seaborn.pydata.org/ generated/seaborn.histplot.html

Joh*_*anC 18

histplotline_kws={...}目的是改变 kde 行的外观。但是,当前的seaborn版本不允许以这种方式更改颜色,可能是因为颜色与参数一起使用hue(尽管hue在本例中未使用)。

import seaborn as sns

penguins = sns.load_dataset('penguins')
ax = sns.histplot(data=penguins, x="flipper_length_mm", kde=True,
                  line_kws={'color': 'crimson', 'lw': 5, 'ls': ':'})
Run Code Online (Sandbox Code Playgroud)

histplot 更改 kde 行参数

seaborn的github中,建议将histplotkdeplot分开绘制。为了使两者在 y 方向上匹配,必须使用histplotwith stat='density'kdeplot没有参数可以使用histplot的 default stat='count')。

penguins = sns.load_dataset('penguins')
ax = sns.histplot(data=penguins, x="flipper_length_mm", kde=False, stat='density')
sns.kdeplot(data=penguins, x="flipper_length_mm", color='crimson', ax=ax)
Run Code Online (Sandbox Code Playgroud)

sns.histplot 和 sns.kdeplot 分别

如果count确实需要统计数据,另一种方法是通过 matplotlib 更改线条颜色:

penguins = sns.load_dataset('penguins')
ax = sns.histplot(data=penguins, x="flipper_length_mm", kde=True)
ax.lines[0].set_color('crimson')
Run Code Online (Sandbox Code Playgroud)

使用 kde=True 更改 sns.histplot 的线条颜色