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

使用plt.hist python将值放在箱子的中心,python,matplotlib,histogram,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

我试图画一个正弦曲线的柱状图,如下所示

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()
下面是我得到的

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


我试过使用bins=np.arange(2)-0.5,它对我不起作用,我想这是因为这个直方图的间隔不是整数,但我不知道如何修复它,有人能帮忙吗,提前谢谢

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

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

以下是。

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

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

这是。

您好,我以前尝试过对齐注释,但它给出了相同的图,箱子不在数字的中心。对不起,我的不好。在示例中,我给出的容器将以中间间隔为中心。例如,在图中,左边的第一个箱子是-2和-1.8之间的值的#。因此,
align='mid'
将把垃圾箱放在-1.9左右。如果你说align=
left
,垃圾桶大约是-2。嗨,我觉得align='left'也不管用,我以前试过,基本上它会将整个图表向左移动,其中-2垃圾桶在中心对齐,正2完全关闭,因为那里没有垃圾桶。嗨,我以前试过align注释,但它给了我同样的情节,垃圾箱不在数字的中心。对不起,我的不好。在示例中,我给出的容器将以中间间隔为中心。例如,在图中,左边的第一个箱子是-2和-1.8之间的值的#。因此,
align='mid'
将把垃圾箱放在-1.9左右。如果你说align=
left
,垃圾箱将在-2左右。嗨,我认为align='left'也不起作用,我以前试过,基本上它会将整个图形向左移动,其中-2垃圾箱在中心对齐,正2完全关闭,因为那里没有垃圾箱。重复的重复