2014-11-22 132 views
1

我有一個列表。 列表的索引是度數。 Value是此度數的概率。使用pyplot繪製直方圖

看起來,x [1] = 0.01意味着,1的概率是0.01。

我要畫這個名單的分佈圖,我嘗試

hist = plt.figure(1) 
plt.hist(PrDeg, bins = 1) 
plt.title("Degree Probability Histogram") 
plt.xlabel("Degree") 
plt.ylabel("Prob.") 
hist.savefig("Prob_Hist") 

PrDeg是我在上面提到的名單。

但是保存的數字不正確。

X軸值變爲Prob。 Y是Degree(列表索引) enter image description here

如何通過使用pyplot交換x和y軸的值?

+0

你直方圖(除使用單一斌)看起來相當的直方圖,我...座標是在垃圾箱的項目數(可能歸),橫座標爲隨機變量。 – gboffi 2014-11-22 17:08:12

回答

1

直方圖通常不會向您顯示概率,它們會顯示不同時間間隔內觀察值的計數或頻率,稱爲分箱。 pyplot通過將陣列的最小值和最大值之間的範圍拆分爲n個相同大小的倉位來定義間隔或倉位,其中n是您用參數指定的數字:bins = 1。所以,在這種情況下,你的直方圖有一個單獨的箱子,它給了它奇怪的方面。通過增加這個數字,你將能夠更好地看到實際發生的情況。

我們可以從這樣一個直方圖得到的唯一信息是,您的數據的值範圍從0.0到〜0.122,而len(PrDeg)接近1800.如果我說得對,那意味着您的圖看起來像人們對直方圖的期望是什麼,因此不是不正確的。

要回答有關交換座標軸的問題,參數orientation=u'horizontal'就是您要查找的內容。我用它在下面的例子中,相應地重命名軸:

import numpy as np 
import matplotlib.pyplot as plt 

PrDeg = np.random.normal(0,1,10000) 
print PrDeg 

hist = plt.figure(1) 
plt.hist(PrDeg, bins = 100, orientation=u'horizontal') 
plt.title("Degree Probability Histogram") 
plt.xlabel("count") 
plt.ylabel("Values randomly generated by numpy") 
hist.savefig("Prob_Hist") 

plt.show()