如何在 python 中绘制直方图箱后的线图

How to make line plot following histogram bins in python

我正在尝试制作一个包含 bin 数量的历史图。 之后我想在 bins 之后绘制一个线图,但我无法绘制线图。我能得到一些帮助吗?

plt.hist(df1_small['fz'], bins=[-5, -4.5, -4, -3.5, -3,-2.5,-2,-1.5,-1,-0.5,0, 0.5, 1,1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5])
sns.kdeplot(df1_small['fz'],fill=True, color = 'Red') 
df1_small['fz'].plot(kind = "kde")
plt.xlabel('Distribution of fz of small particles')
plt.xlim(-5, 5)
plt.show()

这是我的代码。 我得到的情节是这样的:

如果你注意到了,线图是一种只有0的直线。

如何在所有 bin 之后画线?

数据在这里:https://github.com/Laudarisd/csv

如果只想描出plt.hist的轮廓,使用返回的countsbins:

width = 0.5
counts, bins, bars = plt.hist(data=df1_small, x='fz', bins=np.arange(-5, 5.5, width))
plt.plot(bins[:-1] + width/2, counts)


如果您要叠加 sns.kdeplot:

  • 在直方图上设置 density=True 以绘制概率密度而不是原始计数
  • clip KDE 直方图范围
  • 降低平滑带宽因子bw_adjust
plt.hist(data=df1_small, x='fz', bins=np.arange(-5, 5.5, 0.5), density=True)
sns.kdeplot(data=df1_small, x='fz', clip=(-5, 5), bw_adjust=0.1)