通过下面的代码,我可以用直方图及其核密度估计(kde)来可视化数据。
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/diamonds.csv')
plt.subplots(figsize=(7,6), dpi=100)
#sns.distplot( df.loc[df.species=='setosa', "sepal_length"] , color="dodgerblue", label="Setosa")
#sns.distplot( df.loc[df.species=='virginica', "sepal_length"] , color="orange", label="virginica")
#sns.distplot( df.loc[df.species=='versicolor', "sepal_length"] , color="deeppink", label="versicolor")
sns.histplot(df.loc[df.cut=='Good', 'depth'], bins= 100, color="blue", label="pcts", kde = True)
plt.title('Iris Histogram')
plt.legend();
生成的图形输出如下所示:
如何调整内核平滑线图,使曲线不那么平滑,但更符合直方图的形状?
结果应该更像这个图中的红色曲线:
或者我只是把事情搞混了,我正在寻找的曲线对应于概率密度函数(pdf)?
2条答案
按热度按时间wgmfuz8q1#
您可以将
sns.kdeplot()
关键字作为字典传递给sns.histplot
。要更改KDE绘图的平滑度,您需要使用bw_adjust
参数。50few1ms2#
使用
kde_kws
参数,您可以指定bw_adjust
,根据kdeplut文档,它可以调整'bw_method'中设置的方法返回的带宽值。尝试将其设置为例如。0.1
通过追加kde_kws={'bw_adjust':0.1}
,使您的代码变为:sns.histplot(df.loc[df.cut=='Good', 'depth'], bins= 100, color="blue", label="pcts", kde = True, kde_kws={'bw_adjust':0.1})
如果这还不够,你可能需要调整
bw_method
。