Spec-Zone.ru › Matplotlib
matplotlib.pyplot.hexbin matplotlib.pyplot. hexbin ( x , y , C=None , gridsize=100 , bins=None , xscale='linear' , yscale='linear' , extent=None , cmap=None , norm=None , vmin=None , vmax=None , alpha=None , linewidths=None , edgecolors='face' , reduce_C_function=<function mean> , mincnt=None , marginals=False , * , data=None , **kwargs ) [source]
Создаёт 2D график гексагонального разбиения по точкам x , y .
Если C равно None , значение гексагона определяется количеством точек в гексагоне. В противном случае, C задаёт значения в координатах (x[i], y[i]). Для каждого гексагона эти значения сводятся с помощью reduce_C_function .
Параметры:
x, y array-like
Позиции данных. x и y должны иметь одинаковую длину.
C array-like, необязательно
Если указаны, эти значения накапливаются в ячейках. В противном случае каждое значение имеет значение 1. Должны иметь одинаковую длину с x и y .
gridsize int или (int, int), по умолчанию: 100
Если целое число, то количество шестиугольников в направлении x . Количество шестиугольников в направлении y выбирается таким образом, чтобы шестиугольники были приблизительно правильными.
Если кортеж (nx , ny ), то количество шестиугольников в направлениях x и y . В направлении y подсчет ведется по вертикально расположенным шестиугольникам, а не по зигзагообразным цепочкам; см. иллюстрацию ниже.
(Source code , 2x.png , png )
Для получения приблизительно правильных шестиугольников, выберите \(n_x = \sqrt{3}\,n_y\) .
bins 'log' или int или последовательность, по умолчанию: None
Дискретизация значений шестиугольников.
Если None , то к бинированию не применяется; цвет каждого шестиугольника напрямую соответствует его количеству. Если 'log', то используется логарифмическая шкала для цветовой карты. Внутренне используется \(log_{10}(i+1)\) для определения цвета шестиугольника. Это эквивалентно norm=LogNorm(). Если целое число, то количество ячеек разбивается на указанное количество бинов и шестиугольники окрашиваются соответственно. Если последовательность значений, то значения нижней границы бинов, которые будут использоваться.
xscale {'linear', 'log'}, по умолчанию: 'linear'
Используйте линейную или логарифмическую (по основанию 10) шкалу на горизонтальной оси.
yscale {'linear', 'log'}, по умолчанию: 'linear'
Используйте линейную или логарифмическую (по основанию 10) шкалу на вертикальной оси.
mincnt int >= 0, по умолчанию: None
Если не None , то отображаются только ячейки, в которых содержится не менее mincnt точек.
marginals bool, по умолчанию: False
Если marginals равно True , то строится плотность распределения по краям, как прямоугольники, окрашенные по цветовой карте, вдоль нижней части оси x и слева от оси y.
extent 4-кортеж из float, по умолчанию: None
Пределы ячеек (xmin, xmax, ymin, ymax). По умолчанию пределы устанавливаются на основе gridsize , x , y , xscale и yscale .
Если xscale или yscale установлено в 'log', ожидается, что пределы будут экспонентой степени 10. Например, для пределов x от 1 до 50 в шкале 'linear' и пределов y от 10 до 1000 в шкале 'log' необходимо ввести (1, 50, 1, 3).
Возвращает:
PolyCollection
PolyCollection , определяющий шестиугольные ячейки.
Если marginals равно True , к возвращаемому объекту как атрибуты hbar и vbar будут добавлены горизонтальная и вертикальная гистограммы (оба PolyCollection).
Другие параметры:
cmap str или Colormap , по умолчанию: rcParams["image.cmap"] (по умолчанию: 'viridis')
Экземпляр Colormap или зарегистрированное имя цветовой карты, используемое для сопоставления скалярных данных с цветами.
norm str или Normalize , необязательно
Метод нормализации, используемый для масштабирования скалярных данных в диапазон [0, 1] перед сопоставлением с цветами с помощью cmap . По умолчанию используется линейное масштабирование, сопоставляющее минимальное значение с 0, а максимальное - с 1.
Если задано, это может быть одно из следующих:
vmin, vmax float, необязательно
При использовании скалярных данных и отсутствии явного norm , vmin и vmax определяют диапазон данных, который покрывает цветовая карта. По умолчанию цветовая карта покрывает весь диапазон значений предоставленных данных. Использование vmin /vmax при заданном экземпляре norm является ошибкой (но использование имени norm str вместе с vmin /vmax допустимо).
alpha значение от 0 до 1, необязательно
Значение альфа-смешивания, от 0 (прозрачный) до 1 (непрозрачный).
linewidths float, по умолчанию: None
Если None , по умолчанию равно rcParams["patch.linewidth"] (по умолчанию: 1.0).
edgecolors {'face', 'none', None } или цвет, по умолчанию: 'face'
Цвет границ шестиугольников. Возможные значения:
'face': Рисует границы в том же цвете, что и заливка. 'none': Границы не рисуются. Это иногда может привести к некрасивым неокрашенным пикселям между шестиугольниками.
None : Рисует контуры в стандартном цвете. Явное задание цвета.
reduce_C_function callable, по умолчанию: numpy.mean
Функция агрегирования C в ячейках. Игнорируется, если C не указано. Функция должна иметь следующий вид:
def reduce_C_function(C: array) -> float
Обычно используемые функции:
По умолчанию будет обрабатывать только ячейки с не менее чем одной точкой, так как некоторые функции (например, numpy.amax ) будут выдавать ошибку или предупреждение для пустых входных данных. Изменение mincnt позволит настроить пороговое значение, и если установить его в 0, пустой вход будет передан функции агрегации.
data индексируемый объект, необязательно
Если задано, следующие параметры также принимают строку s, которая интерпретируется как data[s] (если это не вызывает исключение):
x , y , C
**kwargs PolyCollection свойства
Все остальные ключевые параметры передаются PolyCollection :
См. также
hist2d
2D гистограмма прямоугольных ячеек
Примечания
Примеры использования matplotlib.pyplot.hexbin
<img alt="" loading="lazy" src="data:image/png;base64,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