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.histogram
将 x 中的数据分箱并计算每个箱中的值数量,然后将分布绘制为BarContainer
或Polygon
。bins、range、density 和 weights 参数会转发给numpy.histogram
。如果数据已经分箱并计数,请使用
bar
或stairs
来绘制分布。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)。如果 density 为
True
,则权重会被归一化,使得该范围内的密度积分仍为 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数组或数组列表
直方图箱的值。有关可能语义的描述,请参见 density 和 weights。如果输入 x 是一个数组,则这是一个长度为 nbins 的数组。如果输入是数组序列
[data1, data2, ...]
,则这是一个数组列表,其中包含每个数组的直方图值,顺序相同。数组 n (或其元素数组) 的 dtype 将始终为浮点型,即使未使用加权或归一化。- bins数组
箱的边缘。长度为 nbins + 1(nbins 个左边缘和最后一个箱的右边缘)。即使传入多个数据集,也始终是单个数组。
- patches
BarContainer
或单个Polygon
列表或此类对象的列表 用于创建直方图的独立艺术家的容器,如果存在多个输入数据集,则为这些容器的列表。
- 其他参数:
- data可索引对象,可选
如果给定,以下参数也接受字符串
s
,如果s
是data
中的一个键,则解释为data[s]
。x, weights
- **kwargs
Patch
属性。以下属性还接受与 x 中的数据集对应的值序列:edgecolor、facecolor、linewidth、linestyle、hatch。3.10 版本新增:允许在上述列出的 Patch 属性中使用值序列。
备注
注意
这是 pyplot 封装器,用于
axes.Axes.hist
。对于大量箱(>1000),通过使用
stairs
绘制预计算的直方图(plt.stairs(*np.histogram(data))
),或将 histtype 设置为 'step' 或 'stepfilled' 而非 'bar' 或 'barstacked',可以显著加快绘图速度。