使用pyplot绘制直方图

时间:2014-11-22 13:25:25

标签: python matplotlib histogram

我有一份清单。 列表索引是度数。 值是该学位数的概率。

看起来,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是度(列表索引) enter image description here

如何使用pyplot交换x轴和y轴值?

1 个答案:

答案 0 :(得分:1)

直方图通常不会显示概率,它们显示不同值间隔内观察值的计数或频率,称为容器。 pyplot通过将数组的最小值和最大值之间的范围拆分为n个大小相等的二进制位来定义区间或区间,其中n是您使用参数bins = 1指定的数字。所以,在这种情况下,你的直方图有一个单独的bin,它给它奇怪的方面。通过增加该数字,您将能够更好地了解实际发生的情况。

我们可以从这样的直方图中获得的唯一信息是,您的数据值范围从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()