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)[源代码][源代码]#
计算并绘制直方图。
此方法使用
numpy.histogram
对 x 中的数据进行分箱,并计算每个箱中的值的数量,然后以BarContainer
或Polygon
的形式绘制分布。bins、range、density 和 weights 参数被传递给numpy.histogram
。如果数据已经被分箱并计数,使用
bar
或stairs
来绘制分布:counts, bins = np.histogram(x) plt.stairs(counts, bins)
或者,使用
hist()
绘制预计算的箱子和计数,将每个箱子视为一个点,其权重等于其计数: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 : int 或 sequence 或 str, 默认值:
rcParams["hist.bins"]
(default:10
)int 或 sequence 或 str, 默认: 如果 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'。- 范围tuple 或 None, 默认: None
箱子的下限和上限范围。忽略下限和上限的异常值。如果没有提供,range 是
(x.min(), x.max())
。如果 bins 是一个序列,范围没有影响。如果 bins 是一个序列或指定了 range ,则自动缩放将基于指定的箱范围,而不是 x 的范围。
- 密度bool, 默认: False
如果
True
,绘制并返回概率密度:每个箱子将显示箱子的原始计数除以总计数 *和箱子宽度*(density = counts / (sum(counts) * np.diff(bins))
),使得直方图下的面积积分为1(np.sum(density * np.diff(bins)) == 1
)。如果 stacked 也是
True
,直方图的总和将被归一化为1。- 权重(n,) 数组类或 None, 默认: None
一个权重数组,形状与 x 相同。x 中的每个值仅将其相关权重贡献给箱计数(而不是 1)。如果 density 为
True
,则权重被归一化,使得密度在范围内的积分保持为 1。- 累积布尔值或 -1,默认:False
如果
True
,则计算一个直方图,其中每个箱子给出该箱子及其所有较小值箱子的计数。最后一个箱子给出数据点的总数。如果 density 也是
True
,那么直方图会被归一化,使得最后一个箱子等于 1。如果 cumulative 是一个小于 0 的数字(例如,-1),累积的方向将反转。在这种情况下,如果 density 也是
True
,那么直方图将被归一化,使得第一个箱等于 1。- 底部类数组、标量或无,默认:无
每个箱子的底部位置,即箱子从
bottom
绘制到bottom + hist(x, bins)
。如果是一个标量,每个箱子的底部会按相同数量移动。如果是一个数组,每个箱子会独立移动,且 bottom 的长度必须与箱子的数量匹配。如果为 None,默认为 0。- histtype{'bar', 'barstacked', 'step', 'stepfilled'}, 默认: 'bar'
要绘制的直方图类型。
'bar' 是一个传统的条形图。如果给出多个数据,条形会并排排列。
'barstacked' 是一种条形图类型的直方图,其中多个数据堆叠在一起。
'step' 生成一个默认未填充的线图。
'stepfilled' 生成一个默认填充的线图。
- 对齐{'left', 'mid', 'right'}, 默认: 'mid'
直方图条的水平对齐方式。
'left': 条形图以左侧的箱边缘为中心。
'mid': 柱状图在箱子边缘之间居中。
'right': 条形图以右侧边缘为中心。
- 方向{'垂直', '水平'}, 默认: '垂直'
如果为 'horizontal',则将使用
barh
来绘制条形直方图,并且 bottom 关键字参数将是左边缘。- rwidthfloat 或 None, 默认: None
条形的相对宽度,作为箱宽的一部分。如果为
None
,则自动计算宽度。如果 histtype 是 'step' 或 'stepfilled',则忽略。
- 日志bool, 默认: False
如果
True
,直方图的坐标轴将被设置为对数刻度。- 颜色 : color 或 color 列表 或 None, 默认: None颜色或颜色列表或无,默认:无
颜色或颜色序列,每个数据集对应一个颜色。默认 (
None
) 使用标准的线条颜色序列。- 标签str 或 str 列表,可选
字符串,或匹配多个数据集的字符串序列。条形图每个数据集产生多个补丁,但只有第一个补丁获得标签,以便
legend
能按预期工作。- 堆叠bool, 默认: False
如果
True
,多个数据会堆叠在一起;如果False
,多个数据会并排排列(如果 histtype 是 'bar')或堆叠在一起(如果 histtype 是 'step')。
- 返回:
- n数组或数组列表
直方图箱的值。参见 density 和 weights 以了解可能的语义描述。如果输入 x 是一个数组,那么这就是一个长度为 nbins 的数组。如果输入是一个数组序列
[data1, data2, ...]
,那么这就是一个数组列表,其中包含每个数组的直方图值,顺序相同。数组 n (或其元素数组)的 dtype 将始终为 float,即使未使用加权或归一化。- bins数组
箱子的边缘。长度为 nbins + 1(nbins 个左边缘和最后一个箱子的右边缘)。即使传入了多个数据集,也始终是一个数组。
- 补丁 :
BarContainer
或单个Polygon
的列表,或此类对象的列表BarContainer 或单个 Polygon 的列表或此类对象的列表 用于创建直方图的单个艺术家的容器,如果有多个输入数据集,则包含此类容器的列表。
- 其他参数:
- 数据可索引对象,可选
如果给出,以下参数也接受一个字符串
s
,如果s
是data
中的一个键,则解释为data[s]
:x, weights
- **kwargs
Patch
属性。以下属性还接受与 x 中的数据集对应的值序列:edgecolor、facecolor、linewidth、linestyle、hatch。Added in version 3.10: 允许在上列的 Patch 属性中使用值序列。
注释
备注
这是
axes.Axes.hist
的 pyplot 包装器。对于大量的箱子(>1000),可以通过使用
stairs
绘制预先计算的直方图(plt.stairs(*np.histogram(data))
),或者将 histtype 设置为 'step' 或 'stepfilled' 而不是 'bar' 或 'barstacked' 来显著加速绘图。