2014-11-22 102 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()