使用plt.hist python将值放在bin的中心

时间:2017-10-08 23:40:49

标签: python matplotlib histogram

我试图绘制一条正弦曲线的直方图,如下所示

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

dt=0.01 #delta t
T_upper=100. #time upper limit
t=np.arange(0.,T_upper+dt,dt) #time
#print t[-1]
a=2. #wave amplitude
T=2. #wave period
phi=np.pi/2 #phase
eta=a*np.sin(2*np.pi/T*t+phi)
#plt.plot(t,eta)

plt.hist(eta,normed=True,bins=20,color='blue',edgecolor='black',linewidth=1)
plt.ylabel('Probability')
plt.xlim(eta.min()*1.25,eta.max()*1.25)
plt.xticks([-2,-1,0,1,2])
plt.show()

以下是我得到的 enter image description here

可以看出,箱子与它们的值不一致。我想要的是让箱子位于其值的中心,例如在min,-2和max 2处。

我尝试使用bins = np.arange(2)-0.5,它对我不起作用,我认为是因为这个直方图的间隔不是整数,但我不知道如何解决它,可以有人帮忙,提前谢谢。

1 个答案:

答案 0 :(得分:0)

您需要指定align参数,例如:

plt.hist(eta, align='mid')

以下是docs