猿问

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

考虑在 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:

(这在只有一个数据点时最为明显,但对于例如两个或三个数据点来说也是一个问题。)

避免这种情况的一种方法是重新使用另一个数据集的箱。例如,对于plt.hist(data3, bins=bins1),我们可以看到data3就好了:

http://img.mukewang.com/618129580001fb4a05850426.jpg

但是,如果我们通过 使用其他数据集bins=bins2,则 bin 太窄,我们根本看不到data3

http://img1.mukewang.com/61812961000128eb05960438.jpg

我们如何确保具有相对较少点的直方图可见,但仍能看到其在 x 轴上的值?


不负相思意
浏览 186回答 1
1回答

慕后森

考虑在 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:或者histtype="stepfilled"用来创建一个多边形,因为无论如何单个条形都无法与那么多垃圾箱区分开来,n2, bins2, patches2 = plt.hist(data2, bins='auto', alpha=0.6, histtype="stepfilled")后者还具有服从 alpha 的优点,否则由于条形的重叠而看不到它。此外,它应该更快地绘制单个形状而不是大约 1000 个条形图。
随时随地看视频慕课网APP

相关分类

Python
我要回答