当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python matplotlib hist用法及代码示例


本文简要介绍 python 语言中 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 binsrangedensityweights 参数转发到 numpy.histogram

如果数据已经分箱和计数,请使用 bar stairs 绘制分布图:

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

或者,使用 hist() 绘制预先计算的 bin 和计数,将每个 bin 视为权重等于其计数的单个点:

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

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

不支持屏蔽数组。

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

输入值,这需要单个数组或不需要具有相同长度的数组序列。

bins int 或序列或 str,默认值:rcParams["hist.bins"] (默认值:10 )

如果bins 是整数,则它定义范围内equal-width 箱的数量。

如果bins是一个序列,它定义了bin边,包括第一个bin的左边和最后一个bin的右边;在这种情况下,箱子的间距可能不均匀。除了最后一个 (righthand-most) 箱子外,所有箱子都是半开的。换句话说,如果 bins 是:

[1, 2, 3, 4]

那么第一个 bin 是 [1, 2) (包括 1,但不包括 2),第二个 bin 是 [2, 3) 。然而,最后一个 bin 是 [3, 4] ,其中 includes 4。

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

range 元组或无,默认:无

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

如果 bins 是序列或指定了 range,则自动缩放基于指定的 bin 范围而不是 x 的范围。

density 布尔值,默认值:假

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

如果 stacked 也是 True ,则直方图的总和标准化为 1。

weights (n,) 类似数组或无,默认值:无

权重数组,其形状与 x 相同。 x 中的每个值仅对 bin 计数贡献其相关权重(而不是 1)。如果 densityTrue ,则对权重进行归一化,以便密度在该范围内的积分保持为 1。

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

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

如果 density 也是 True,则对直方图进行归一化,使最后一个 bin 等于 1。

如果cumulative是小于0的数字(例如-1),则累加方向相反。在这种情况下,如果 density 也是 True ,则对直方图进行归一化,使第一个 bin 等于 1。

bottom 类似数组、标量或无,默认值:无

每个 bin 底部的位置,即 bin 从 bottom 绘制到 bottom + hist(x, bins) 如果是标量,则每个 bin 的底部移动相同的量。如果是数组,则每个 bin 独立移动,并且底部的长度必须与 bin 的数量匹配。如果无,则默认为 0。

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

要绘制的直方图的类型。

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

  • 'barstacked' 是 bar-type 直方图,其中多个数据相互堆叠。

  • 'step' 生成默认未填充的线图。

  • 'stepfilled' 生成默认填充的线图。

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

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

  • 'left':条形图位于左侧 bin 边的中心。

  • 'mid':条形图位于 bin 边之间的中心。

  • 'right':条形图位于右侧 bin 边的中心。

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

如果'horizontal', barh 将用于bar-type直方图,bottom kwarg将是左边。

rwidth float 或 None,默认值:None

条形的相对宽度占 bin 宽度的一部分。如果是 None ,则自动计算宽度。

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

log 布尔值,默认值:假

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

color 颜色或类似颜色的数组或无,默认值:无

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

label str 或 None,默认值:None

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

stacked 布尔值,默认值:假

如果 True ,则多个数据堆叠在一起 如果 False 如果 histtype 为 'bar',则多个数据并排排列;如果 histtype 为 'step',则多个数据并排排列

返回
n 数组或数组列表

直方图箱的值。有关可能语义的说明,请参阅densityweights。如果输入 x 是一个数组,则这是一个长度为 nbins 的数组。如果输入是数组序列 [data1, data2, ...] ,则这是一个数组列表,其中每个数组的直方图值的顺序相同。即使不使用加权或标准化,数组n(或其元素数组)的数据类型也将始终为浮点型。

bins 数组

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

patches BarContainer 或单个 Polygon 的列表或此类对象的列表

如果有多个输入数据集,则用于创建此类容器的直方图或列表的各个艺术家的容器。

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

如果给出,以下参数还接受字符串 s ,该字符串被解释为 data[s] (除非这引发异常):

x , weights

**kwargs

Patch 属性

注意

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

相关用法


注:本文由纯净天空筛选整理自skytowner.com大神的英文原创作品 matplotlib.pyplot.hist。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。