numpy.histogram2d
-
numpy.histogram2d(x, y, bins=10, range=None, normed=None, weights=None, density=None)[source] -
Вычисление двумерной гистограммы двух выборок данных.
- Параметры
-
-
xarray_like, shape (N,) -
Массив, содержащий координаты x точек, для которых рассчитывается гистограмма.
-
yarray_like, shape (N,) -
Массив, содержащий координаты y точек, для которых рассчитывается гистограмма.
-
binsint or array_like or [int, int] or [array, array], optional -
Указание разбиения на интервалы:
- Если целое число, количество интервалов для двух измерений (nx=ny=bins).
- Если массив, границы интервалов для двух измерений (x_edges=y_edges=bins).
- Если [int, int], количество интервалов в каждом измерении (nx, ny = bins).
- Если [массив, массив], границы интервалов в каждом измерении (x_edges, y_edges = bins).
- Комбинация [int, массив] или [массив, int], где int — количество интервалов, а массив — границы интервалов.
-
rangearray_like, shape(2,2), optional -
Левая и правая границы интервалов по каждому измерению (если не указаны явно в параметрах
bins):[[xmin, xmax], [ymin, ymax]]. Все значения вне этого диапазона будут считаться выбросами и не будут учтены в гистограмме. -
densitybool, optional -
Если False (по умолчанию), возвращает количество образцов в каждом интервале. Если True, возвращает плотность вероятности в интервале,
bin_count / sample_count / bin_area. -
normedbool, optional -
Псевдоним для аргумента density, который ведет себя идентично. Для избежания путаницы с устаревшим аргументом normed в
histogram, следует предпочестьdensity. -
weightsarray_like, shape(N,), optional -
Массив весов
w_iдля каждого образца(x_i, y_i). Веса нормируются до 1, еслиnormedравно True. Еслиnormedравно False, значения возвращаемой гистограммы равны сумме весов образцов, попадающих в каждый интервал.
-
- Возвращает
-
-
Hndarray, shape(nx, ny) -
Двумерная гистограмма образцов
xиy. Значения вxгистограммируются по первому измерению, а значения вy— по второму измерению. -
xedgesndarray, shape(nx+1,) -
Границы интервалов по первому измерению.
-
yedgesndarray, shape(ny+1,) -
Границы интервалов по второму измерению.
-
См. также
-
histogram -
1D гистограмма
-
histogramdd -
Многомерная гистограмма
Примечания
Когда
normedравно True, возвращаемая гистограмма представляет собой плотность выборок, определённую так, что сумма по интервалам произведения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]
Далее мы создаём гистограмму 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='low', ... 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()
© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/generated/numpy.histogram2d.html