Python:直方图的面积归一化为非1
有没有一种方法可以告诉matplotlib“标准化”直方图,使其面积等于指定值(而不是1)?
在选项“规范= 0”
n, bins, patches = plt.hist(x, 50, normed=0, histtype='stepfilled')
只是将其恢复为频率分布。
-
只需对其进行计算并将其归一化为您想要的任何值,然后用于
bar
绘制直方图即可。顺便提一下,这将使所有条形图的 面积 都标准化为
normed_value
。原始总和将 不会
是normed_value
(虽然它很容易有这样的情况,如果你愿意)。例如
import numpy as np import matplotlib.pyplot as plt x = np.random.random(100) normed_value = 2 hist, bins = np.histogram(x, bins=20, density=True) widths = np.diff(bins) hist *= normed_value plt.bar(bins[:-1], hist, widths) plt.show()
因此,在这种情况下,如果我们要整合(将高度乘以宽度乘以宽度)垃圾箱,我们将得到2.0而不是1.0。(即
(hist * widths).sum()
会产生2.0
)