为了账号安全,请及时绑定邮箱和手机立即绑定

选择数据点相对较少的直方图的 bin

选择数据点相对较少的直方图的 bin

不负相思意 2021-11-02 20:04:09
考虑在 matplotlib 中具有多个直方图的图,如下所示:#! /usr/bin/env python3import matplotlib.pyplot as pltimport random# Use the same seed for reproducibility.random.seed(10586)data1 = [random.gauss(1e-4, 3e-2) for _ in range(10**3)] + [0.3]data2 = [random.gauss(1e-2, 3e-3) for _ in range(10**3)] + [0.4]data3 = [0.2]if __name__ == '__main__':    plt.xlim(xmin=0, xmax=0.8)    plt.yscale('log')    n1, bins1, patches1 = plt.hist(data1, bins='auto', alpha=0.6)    n2, bins2, patches2 = plt.hist(data2, bins='auto', alpha=0.6)    n3, bins3, patches3 = plt.hist(data3, bins='auto', alpha=0.6)    bin_options = ['auto', 'fd', 'doane', 'scott', 'rice', 'sturges', 'sqrt']    plt.show()然而,第三个数据集只有一个数据点,所以当我们使用时,plt.hist(data3, bins='auto') 我们得到一个横跨 x 范围的长条,并且看不到它的值为 0.2:(这在只有一个数据点时最为明显,但对于例如两个或三个数据点来说也是一个问题。)避免这种情况的一种方法是重新使用另一个数据集的箱。例如,对于plt.hist(data3, bins=bins1),我们可以看到data3就好了:但是,如果我们通过 使用其他数据集bins=bins2,则 bin 太窄,我们根本看不到data3:我们如何确保具有相对较少点的直方图可见,但仍能看到其在 x 轴上的值?
查看完整描述

1 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

考虑在 matplotlib 中具有多个直方图的图,如下所示:


#! /usr/bin/env python3

import matplotlib.pyplot as plt

import random


# Use the same seed for reproducibility.

random.seed(10586)


data1 = [random.gauss(1e-4, 3e-2) for _ in range(10**3)] + [0.3]

data2 = [random.gauss(1e-2, 3e-3) for _ in range(10**3)] + [0.4]

data3 = [0.2]


if __name__ == '__main__':

    plt.xlim(xmin=0, xmax=0.8)

    plt.yscale('log')

    n1, bins1, patches1 = plt.hist(data1, bins='auto', alpha=0.6)

    n2, bins2, patches2 = plt.hist(data2, bins='auto', alpha=0.6)

    n3, bins3, patches3 = plt.hist(data3, bins='auto', alpha=0.6)

    bin_options = ['auto', 'fd', 'doane', 'scott', 'rice', 'sturges', 'sqrt']

    plt.show()

然而,第三个数据集只有一个数据点,所以当我们使用时,plt.hist(data3, bins='auto') 我们得到一个横跨 x 范围的长条,并且看不到它的值为 0.2:

//img1.sycdn.imooc.com//618129740001186205360242.jpg

或者histtype="stepfilled"用来创建一个多边形,因为无论如何单个条形都无法与那么多垃圾箱区分开来,

n2, bins2, patches2 = plt.hist(data2, bins='auto', alpha=0.6, histtype="stepfilled")

//img1.sycdn.imooc.com//618129800001db3005460245.jpg

后者还具有服从 alpha 的优点,否则由于条形的重叠而看不到它。此外,它应该更快地绘制单个形状而不是大约 1000 个条形图。


查看完整回答
反对 回复 2021-11-02
  • 1 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信