numpy.histogram2d

numpy.histogram2d(x, y, bins=10, range=None, normed=None, weights=None, density=None)[源代码]

计算两个数据样本的二维直方图。

参数
x阵列状,形状(n,)

一种包含待直方图化点的X坐标的数组。

y阵列状,形状(n,)

一个包含要进行柱状图化的点的Y坐标的数组。

binsint或array-like或 [int] 或 [数组,数组] 可选

料仓规格:

  • 如果为int,则表示两个维度的箱数(nx=ny=bin)。

  • 如果类似于数组,则表示两个维度的箱边缘(x_edges=y_edges=bin)。

  • 如果 [int] ,每个维度中的箱数(nx,ny=箱)。

  • 如果 [数组,数组] ,每个维度中的肥料箱边缘(x_边缘,y_边缘=肥料箱)。

  • 组合 [int数组] 或 [数组,int] ,其中int是箱数,array是箱边。

range阵列式,形状(2,2),可选

沿每个维度(如果未在 bins 参数): [[xmin, xmax], [ymin, ymax]] . 此范围之外的所有值都将被视为异常值,并且不在柱状图中计数。

density可选的布尔

如果为false,则默认为返回每个容器中的样本数。如果为真,则返回概率 密度 垃圾箱的功能, bin_count / sample_count / bin_area .

normed可选的布尔

行为相同的密度参数的别名。为了避免与破坏规范的论点混淆 histogramdensity 应优先考虑。

weights数组类似,形状(n,)可选

值的数组 w_i 称量每个样品 (x_i, y_i) . 如果 normed 是True。如果 normed 如果为false,则返回的直方图值等于属于每个容器中的样本的权重之和。

返回
Hndarray,形状(nx,ny)

样本的二维直方图 xy . 价值观 x 沿着第一个维度和值进行柱状图 y 是沿着第二维度的柱状图。

xedgesndarray,形状(nx+1,)

粮箱沿第一个维度边缘。

yedgesndarray,形状(ny+1,)

粮箱沿第二维度边缘。

参见

histogram

一维直方图

histogramdd

多维柱状图

笔记

什么时候? normed 为真,则返回的柱状图是样本密度,定义为产品的箱数和 bin_value * bin_area 是1。

请注意,柱状图不遵循笛卡尔惯例,其中 x 数值在横坐标上,并且 y 坐标轴上的值。更确切地说, x 是沿着数组的第一个维度(垂直)绘制的柱状图,并且 y 沿着数组的第二个维度(水平)。这确保了与 histogramdd .

实例

>>> from matplotlib.image import NonUniformImage
>>> import matplotlib.pyplot as plt

构建一个二维柱状图,该柱状图的箱宽可变。首先定义垃圾箱边缘:

>>> xedges = [0, 1, 3, 5]
>>> yedges = [0, 2, 3, 4, 6]

接下来,我们创建一个带有随机bin内容的直方图h:

>>> x = np.random.normal(2, 1, 100)
>>> y = np.random.normal(1, 1, 100)
>>> H, xedges, yedges = np.histogram2d(x, y, bins=(xedges, yedges))
>>> H = H.T  # Let each row list bins with common y range.

imshow 只能显示方形箱子:

>>> fig = plt.figure(figsize=(7, 3))
>>> ax = fig.add_subplot(131, title='imshow: square bins')
>>> plt.imshow(H, interpolation='nearest', origin='lower',
...         extent=[xedges[0], xedges[-1], yedges[0], yedges[-1]])
<matplotlib.image.AxesImage object at 0x...>

pcolormesh 可以显示实际边缘:

>>> ax = fig.add_subplot(132, title='pcolormesh: actual edges',
...         aspect='equal')
>>> X, Y = np.meshgrid(xedges, yedges)
>>> ax.pcolormesh(X, Y, H)
<matplotlib.collections.QuadMesh object at 0x...>

NonUniformImage 可用于通过插值显示实际肥料箱边缘:

>>> ax = fig.add_subplot(133, title='NonUniformImage: interpolated',
...         aspect='equal', xlim=xedges[[0, -1]], ylim=yedges[[0, -1]])
>>> im = NonUniformImage(ax, interpolation='bilinear')
>>> xcenters = (xedges[:-1] + xedges[1:]) / 2
>>> ycenters = (yedges[:-1] + yedges[1:]) / 2
>>> im.set_data(xcenters, ycenters, H)
>>> ax.images.append(im)
>>> plt.show()
../../_images/numpy-histogram2d-1.png