matplotlib.pyplot.hist#

matplotlib.pyplot.hist(x, bins=None, *, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, data=None, **kwargs)[source]#

计算并绘制直方图。

此方法使用 numpy.histogramx 中的数据分箱并计算每个箱中的值数量,然后将分布绘制为 BarContainerPolygonbinsrangedensityweights 参数会转发给 numpy.histogram

如果数据已经分箱并计数,请使用 barstairs 来绘制分布。

counts, bins = np.histogram(x)
plt.stairs(counts, bins)

或者,可以通过将每个 bin 视为一个具有与其计数相等权重点的单点来使用 hist() 绘制预计算的 bin 和计数。

plt.hist(bins[:-1], bins, weights=counts)

数据输入 x 可以是单个数组、可能长度不同的数据集列表([x0, x1, ...]),或其中每列都是一个数据集的 2D ndarray。请注意,ndarray 形式相对于列表形式是转置的。如果输入是数组,则返回值为元组 (n, bins, patches);如果输入是数组序列,则返回值为元组 ([n0, n1, ...], bins, [patches0, patches1, ...])。

不支持掩码数组。

参数:
x(n,) 数组或 (n,) 数组序列

输入值,可以是单个数组,也可以是长度不要求相同的数组序列。

bins整数、序列或字符串,默认值:rcParams["hist.bins"] (默认值:10)

如果 bins 是一个整数,它定义了范围内的等宽箱数。

如果 bins 是一个序列,它定义了箱的边缘,包括第一个箱的左边缘和最后一个箱的右边缘;在这种情况下,箱可能不均匀分布。除了最后一个(最右侧的)箱之外,所有箱都是半开的。换句话说,如果 bins

[1, 2, 3, 4]

那么第一个箱是 [1, 2)(包含 1,但不包含 2),第二个是 [2, 3)。然而,最后一个箱是 [3, 4],它 包含 4。

如果 bins 是一个字符串,它是 numpy.histogram_bin_edges 支持的分箱策略之一:'auto'、'fd'、'doane'、'scott'、'stone'、'rice'、'sturges' 或 'sqrt'。

range元组或 None,默认值:None

箱的下限和上限范围。下限和上限异常值将被忽略。如果未提供,range(x.min(), x.max())。如果 bins 是序列,range 无效。

如果 bins 是一个序列或 range 已指定,则自动缩放基于指定的箱范围而非 x 的范围。

density布尔值, 默认: False

如果为 True,则绘制并返回概率密度:每个箱将显示该箱的原始计数除以总计数 和箱宽density = counts / (sum(counts) * np.diff(bins))),从而使直方图下的面积积分为 1(np.sum(density * np.diff(bins)) == 1)。

如果 stacked 也为 True,则直方图的总和被归一化为 1。

weights(n,) 类数组对象或 None,默认值:None

一个权重数组,与 x 的形状相同。x 中的每个值仅贡献其关联的权重到箱计数中(而不是 1)。如果 densityTrue,则权重会被归一化,使得该范围内的密度积分仍为 1。

cumulative布尔值或 -1,默认值:False

如果为 True,则计算一个直方图,其中每个箱给出该箱中的计数加上所有较小值的箱中的计数。最后一个箱给出数据点的总数。

如果 density 也为 True,则直方图会被归一化,使得最后一个箱等于 1。

如果 cumulative 是一个小于 0 的数字(例如 -1),则累积方向反转。在这种情况下,如果 density 也为 True,则直方图会被归一化,使得第一个箱等于 1。

bottom类数组对象或浮点数,默认值:0

每个箱底部的Y坐标,即箱从 bottom 绘制到 bottom + hist(x, bins)。如果为标量,则每个箱的底部都按相同量移动。如果为数组,则每个箱独立移动,且底部数组的长度必须与箱数匹配。如果为 None,则默认为 0。

histtype{'bar', 'barstacked', 'step', 'stepfilled'},默认值:'bar'

要绘制的直方图类型。

  • 'bar' 是传统的条形直方图。如果给出多个数据,条形会并排排列。

  • 'barstacked' 是一种条形直方图,其中多个数据相互堆叠。

  • 'step' 生成一个线图,默认不填充。

  • 'stepfilled' 生成一个线图,默认填充。

align{'left', 'mid', 'right'},默认值:'mid'

直方图条形的水平对齐方式。

  • 'left':条形以左侧箱边缘为中心。

  • 'mid':条形以箱边缘之间为中心。

  • 'right':条形以右侧箱边缘为中心。

orientation{'vertical', 'horizontal'},默认值: 'vertical'

如果为 'horizontal',则 barh 将用于条形直方图,并且 bottom kwarg 将是左边缘。

rwidth浮点数或 None,默认值:None

条形相对于箱宽的比例宽度。如果为 None,则自动计算宽度。

如果 histtype 为 'step' 或 'stepfilled',则忽略。

log布尔值,默认值:False

如果为 True,则直方图轴将设置为对数刻度。

color颜色颜色 列表或 None,默认值:None

颜色或颜色序列,每个数据集一个。默认值 (None) 使用标准线条颜色序列。

label字符串或字符串列表,可选

字符串,或与多个数据集匹配的字符串序列。条形图每个数据集会生成多个补丁,但只有第一个补丁获得标签,以便 legend 能按预期工作。

stacked布尔值,默认值:False

如果为 True,则多个数据相互堆叠。如果为 False,则在 histtype 为 'bar' 时多个数据并排排列,或在 histtype 为 'step' 时相互堆叠。

返回:
n数组或数组列表

直方图箱的值。有关可能语义的描述,请参见 densityweights。如果输入 x 是一个数组,则这是一个长度为 nbins 的数组。如果输入是数组序列 [data1, data2, ...],则这是一个数组列表,其中包含每个数组的直方图值,顺序相同。数组 n (或其元素数组) 的 dtype 将始终为浮点型,即使未使用加权或归一化。

bins数组

箱的边缘。长度为 nbins + 1(nbins 个左边缘和最后一个箱的右边缘)。即使传入多个数据集,也始终是单个数组。

patchesBarContainer 或单个 Polygon 列表或此类对象的列表

用于创建直方图的独立艺术家的容器,如果存在多个输入数据集,则为这些容器的列表。

其他参数:
data可索引对象,可选

如果给定,以下参数也接受字符串 s,如果 sdata 中的一个键,则解释为 data[s]

x, weights

**kwargs

Patch 属性。以下属性还接受与 x 中的数据集对应的值序列:edgecolorfacecolorlinewidthlinestylehatch

3.10 版本新增:允许在上述列出的 Patch 属性中使用值序列。

另请参阅

hist2d

带矩形箱的 2D 直方图

hexbin

带六边形分箱的二维直方图

stairs

绘制预计算的直方图

bar

绘制预计算的直方图

备注

注意

这是 pyplot 封装器,用于 axes.Axes.hist

对于大量箱(>1000),通过使用 stairs 绘制预计算的直方图(plt.stairs(*np.histogram(data))),或将 histtype 设置为 'step' 或 'stepfilled' 而非 'bar' 或 'barstacked',可以显著加快绘图速度。

使用 matplotlib.pyplot.hist 的示例#

动画直方图

动画直方图

使用 pyplot 的文本和数学文本

使用 pyplot 的文本和数学文本

直方图

直方图

累积分布

累积分布

直方图函数不同 histtype 设置的演示

直方图函数不同 histtype 设置的演示

具有多个数据集的直方图 (hist) 函数

具有多个数据集的直方图 (hist) 函数

直方图箱、密度和权重

直方图箱、密度和权重

SVG 直方图

SVG 直方图

图片教程

图片教程

Pyplot 教程

Pyplot 教程