使用Matplotlib的概率密度直方图没有意义

时间:2017-02-27 09:11:10

标签: python matplotlib histogram probability-density

我刚刚运行了一个简单的任务,试图为我运行的模拟绘制概率密度直方图。但是,当我绘制它时,每个箱的概率似乎与频率图的结果不匹配。有50个箱子,我希望每个箱子的平均概率为2%,这在图表中没有反映出来。

提前致谢

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plntAcres = 88.0
hvstPer = 0.99
hvstAcres = plntAcres*hvstPer
yldAcre = np.random.triangular(47,48,49, 10000)

carryIn = 464
pdn = hvstAcres * yldAcre
imp = 25.0
ttlSup = carryIn + pdn + imp

crush = np.random.uniform(1945, 1990,10000)
expts = np.random.uniform(2085, 2200,10000)
seedRes = 130
ttlDem = crush + expts + seedRes

carryOut = ttlSup - ttlDem

print carryOut

plt.hist(carryOut, bins=50,normed=True)
plt.title("Carry Out Distribution")
plt.xlabel("Value")
plt.ylabel("Probability")
plt.show()

Probability density of Carry out

2 个答案:

答案 0 :(得分:4)

hist函数中,normed参数不会导致概率,但会导致概率密度。如果您想要概率本身,请改用weights参数(并提供1 / len(carryOut))。

至关重要的两条线:

weights = np.ones_like(carryOut) / (len(carryOut))
plt.hist(carryOut, bins=50, weights=weights)

答案 1 :(得分:0)

您的架构是Bell Curve,通常意味着您的随机变量是正态分布的。 检查维基百科Normal Distribution / Gauss distribution