绘制柱形图 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)的主要内容,如果未能解决你的问题,请参考以下文章