2013-07-31 29 views
1

我想在python中創建一個直方圖圖,用一些自定義值對y軸值進行標準化。對於這一點,我想這樣做是這樣的:有沒有辦法在numpy.hist中返回相同長度的數組?

import numpy as np 
import matplotlib.pyplot as plt 

data = np.loadtxt('foo.bar') 
fig = plt.figure() 
ax = fig.add_subplot(111) 

hist=np.histogram(data, bins=(1.0, 1.5 ,2.0,2.5,3.0)) 
x=[hist[0]*5,hist[1]] 
ax.plot(x[0], x[1], 'o') 

但當然,最後的行給出:

ValueError: x and y must have same first dimension 

有沒有辦法迫使np.hist給予相同數量的x [0]和x [1]數組的元素,例如通過刪除其中一個元素的第一個或最後一個元素?

回答

3

hist [1]包含您製作直方圖的限制。我想你可能想要得到這些間隔的中心,如:

x = [hist[0], 0.5*(hist[1][1:]+hist[1][:-1])] 

然後劇情應該沒問題吧?

+0

太棒了,正是我需要的! – mannaroth

0

我想它取決於你的數據源。

嘗試將數據加載爲numpy數組,然後在傳遞給直方圖函數之前自行選擇元素範圍。

例如

dataForHistogram = data[0:100][0:100] # Assuming your data is in this kind of structure. 
+0

我的數據文件只有一列,其中我想製作該直方圖。這不是關於數據本身的限制,但是問題在於np.histogram爲您提供了bin邊界和每個數字的數量,導致數組中包含bin限制的一個額外元素。 – mannaroth

相關問題