Python:直方图的面积归一化为非1

发布于 2021-01-29 15:58:31

有没有一种方法可以告诉matplotlib“标准化”直方图,使其面积等于指定值(而不是1)?

在选项“规范= 0”

n, bins, patches = plt.hist(x, 50, normed=0, histtype='stepfilled')

只是将其恢复为频率分布。

关注者
0
被浏览
46
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    只需对其进行计算并将其归一化为您想要的任何值,然后用于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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看