2011-12-13 150 views
0

我有一個numpy數組「數據」,它只包含一組整數計數。給定另一個陣列「箱」,我只想在「數據」中至少有[b] [0] - 計數,至少bins [1] - 計數等等的總條目的一小部分的頻率圖/ CDF並將其製作成matplotlib中的條形圖。例如,如果:在matplotlib中繪製離散計數數據的有界CDF python

data = [1, 4, 5, 10] 
bins = [0, 5, 6, 7] 

那麼結果應該是具有值> = 0,則條形圖具有0,5,6,7上的x軸和然後數據的分數值> = 5,等等。我怎樣才能使這種「離散」的CDF條形圖在matplotlib中指定的分欄?謝謝。

+0

問題主體不描述CDF,而是1-CDF。看完標題後有點混淆。 –

回答

1

如果您在使用matplotlib我想你也使用numpy的,所以你可以去通過binsdatas制定出data這樣data>bin分數,所有data併爲bins所有bin

要這種效果,這可能工作:

import numpy as np 
# turn data into numpy array for easier manipulation 
data2 = np.array(data) 
n  = len(data2) 

# calculate fractions for each bin in bins 
# astype('float') because otherwise you end up doing integer arithmetic 
fracs = [ sum(data2>=bin).astype('float')/n for bin in bins ] 

現在只是繪製binsfracs,例如

import matplotlib.pyplot as plt 
plt.bar(bins,fracs) 
plt.show() 
+0

爲方便起見,請參閱'numpy.cumsum'。 –

+0

@SteveTjoa:由於cumsum沒有采用「垃圾桶」的說法,它怎麼可以在這裏使用呢?這看起來很有意義,但我看不到它,如果你有一個很好的例子。 – user248237dfsf

相關問題