【问题标题】:Using pyplot to draw histogram使用pyplot绘制直方图
【发布时间】:2014-11-22 13:25:25
【问题描述】:

我有一个清单。 列表的索引是度数。 值是这个度数的概率。

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

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

【问题讨论】:

  • 你的直方图(除了使用单个 bin)对我来说看起来很像直方图......纵坐标是 bin 中项目的计数(可能是标准化的),横坐标是随机变量。

标签: python matplotlib histogram


【解决方案1】:

直方图通常不会向您显示概率,它们会显示在不同的值区间(称为 bin)内观察的计数或频率。 pyplot 通过将数组的最小值和最大值之间的范围拆分为 n 个大小相等的 bin 来定义区间或 bin,其中 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()

【讨论】:

    猜你喜欢
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2018-07-23
    • 2016-06-09
    • 2015-10-25
    • 1970-01-01
    相关资源
    最近更新 更多