绘制柱形图 hist 和 PDF 线(通过 kdeplot)

Posted

技术标签:

【中文标题】绘制柱形图 hist 和 PDF 线(通过 kdeplot)【英文标题】:Plotting bars hist and PDF line (via kdeplot) 【发布时间】:2020-05-24 14:19:33 【问题描述】:

我正在尝试绘制利率条形图并在其上附加一条 PDF 行。我已经寻找解决方案并找到了使用 kdeplot 的方法。

结果很奇怪,kdeplot 线远高于条形 hist,我不知道如何解决。

应用kdeplot后:

在应用 kdeplot 之前:

这是我正在使用的代码:

df=pd.read_excel('interestrate.xlsx')

k=0.0005

bin_steps = np.arange(start = df['Interest rate Real'].min(), stop = df['Interest rate Real'].max(), step = k)

ax = df['Interest rate Real'].hist(bins = bin_steps, figsize=[10,5])
ax1 = df['Interest rate Real']

vals = ax.get_xticks()
ax.set_xticklabels([':,.2%'.format(x) for x in vals])
ax.set_yticklabels([':,.2%'.format(x) for x in vals])
ax.set_title("PDF for Real Interest Rate")
#sns.kdeplot(ax1)

【问题讨论】:

您可以尝试使用sns.distplot(df['Interest rate Real']) 将直方图和kde 绘制在一起。 【参考方案1】:

以下代码 sn-p 应该为您设置正确的方向(只需插入您的数据):

import scipy.stats as st
y = np.random.randn(1000) # your data goes here
plt.hist(y,50, density=True)
mn, mx = plt.xlim()
plt.xlim(mn, mx)
x = np.linspace(mn, mx, 301)
kde = st.gaussian_kde(y)
plt.plot(x, kde.pdf(x));

或者seaborn:

import seaborn as sns
plt.hist(y,50, density=True)
sns.kdeplot(y);

或者简单到:

sns.distplot(y)

【讨论】:

确实如此。但是如何将 kde 与 pandas 直方图对齐? @JohanC。正如你在图上看到的那样,它是对齐的,没有魔法。在df.hist 方法中使用参数density

以上是关于绘制柱形图 hist 和 PDF 线(通过 kdeplot)的主要内容,如果未能解决你的问题,请参考以下文章

R语言绘图——条形图/柱状图

python3——matplotlib绘图1

在同一个图上将数据框绘制为“hist”和“kde”

画图笔记:ggplot2优化柱形图(添加误差线、差异比较分析)

R语言 | 绘制堆叠柱形图示例

pandas可视化:各种图的简单使用