簡體   English   中英

在matplotlib直方圖上繪制相對頻率與絕對值的關系

[英]Plotting Relative Frequency vs. Absolute on a matplotlib histogram

我知道一些類似的問題,但是我已經嘗試過對它們進行編碼,但在我的環境中不起作用。 因此,我有大量的數據列表(浮點數),我想將其繪制為直方圖。 盡管我可以輕松繪制絕對頻率,但我想繪制相對頻率(縱坐標上的分數/百分比,即y軸)。 我的代碼是:

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
#1 - n, bins, patches = ax.hist(zdata, bins=ceil(min-max), normed=1, cumulative=0)
#2 - n, bins, patches = ax.hist(zdata, weights=np.zeros_like(data) + 1. / data.size)
ax.set_xlabel('Atomic z coordinate', size=ceil(min-max))
ax.set_ylabel('Relative Frequency')
ax.legend
plt.show()

我注意到python要求將bin計數作為整數,但是我知道我使用70以便於修復。 我更緊急的問題是,當我嘗試在此代碼段中注釋掉的兩個命令時,兩個命令均無效。 情況1不會引發錯誤,但是當我完成命令並調用show()時,該圖沒有出現。 情況2引發NameError並抱怨它不知道什么是“數據”。 我在其他問題中遵循模板,但不確定自己是什么“數據”。 我的值數組(列表)是zdata。 另外,垃圾箱和補丁之間是否有區別?

我正在使用python 2.7.3,而IDE是Spyder 2.1.11。 非常感謝,如果這與過去的問題非常相似,我深表歉意。

命令np.zeros_like(data)意味着您將使用長度和數據類型與數組data相同的零來填充數組。 如果要使用此命令,則需要定義一個名為data的數組( NameError表示您正在嘗試使用尚未定義的變量名。),或者可能由於zdata存在而想用zdata替換data我猜您希望權重與輸入數據的長度相同。

注意

編寫此代碼的更好方法:

np.zeros_like(data) + 1. / data.size

會是這樣

np.ones_like(data) / data.size

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM