2017-10-08 68 views
1

我試圖畫出一條正弦曲線的柱狀圖如下認沽值使用plt.hist蟒蛇

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

可以看出該箱不符合其價值。我想要的是讓垃圾箱位於它們的值的中心,例如分鐘,-2和最大值2.

我試過使用bins = np.arange(2)-0.5,它不適用於我,我認爲這是因爲這個直方圖的間隔不是整數,但我不知道如何解決它,任何人都可以幫助,在此先感謝。

回答

0

你需要指定align參數,例如:

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

這裏是docs

+0

嗨,我已經嘗試過對齊評論,但它給了我同樣的情節,垃圾箱不位於數字的中心。 –

+0

對不起我的壞。在我給出的例子中,垃圾箱將在間隔中間居中。例如,在圖中,左邊的第一個bin是-2和-1.8之間的值。所以'align ='mid''將會把這個bin放到-1.9左右。如果你說align ='left',那麼bin會在-2左右。 –

+0

你好,我不認爲對齊='左'也可以工作,我之前嘗試過,基本上它將整個圖轉移到左側,其中-2位置在中心對齊,正2完全關閉那裏沒有垃圾桶。 –