Spec-Zone.ru › Matplotlib 3.4

matplotlib.patches.Arc

class matplotlib.patches.Arc(xy, width, height, angle=0.0, theta1=0.0, theta2=360.0, **kwargs)[source]

Bases: matplotlib.patches.Ellipse

Эллиптическая дуга, т.е. отрезок эллипса.

Из-за внутренних оптимизаций существуют определенные ограничения при использовании Arc:

  • Дугу нельзя заполнить.
  • Дуга должна использоваться в экземпляре Axes. Ее нельзя добавлять непосредственно в Figure, так как она оптимизирована для рендеринга только тех отрезков, которые находятся внутри области осей с высоким разрешением.
Параметры:
xy(float, float)

Центр эллипса.

widthfloat

Длина горизонтальной оси.

heightfloat

Длина вертикальной оси.

anglefloat

Поворот эллипса в градусах (против часовой стрелки).

theta1, theta2float, по умолчанию: 0, 360

Начальный и конечный углы дуги в градусах. Эти значения относительны к angle, например, если angle = 45 и theta1 = 90, то абсолютный начальный угол равен 135. По умолчанию theta1 = 0, theta2 = 360, т.е. полный эллипс. Дуга рисуется против часовой стрелки. Углы, большие или равные 360, или меньшие 0, представлены эквивалентным углом в диапазоне [0, 360), взятым по модулю 360 от входного значения.

Другие параметры:
**kwargsPatch свойства

Большинство свойств Patch поддерживаются в качестве ключевых аргументов, за исключением fill и facecolor, так как заполнение не поддерживается.

Свойство Описание
agg_filter функция фильтра, которая принимает (m, n, 3) массив float и значение dpi и возвращает (m, n, 3) массив
alpha скаляр или None
animated bool
antialiased или aa неизвестно
capstyle CapStyle или {'butt', 'projecting', 'round'}
clip_box Bbox
clip_on bool
clip_path Patch или (Path, Transform) или None
color цвет
contains неизвестно
edgecolor или ec цвет или None или 'auto'
facecolor или fc цвет или None
figure Figure
fill bool
gid строка
hatch {'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}
in_layout bool
joinstyle JoinStyle или {'miter', 'round', 'bevel'}
label объект
linestyle или ls {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}
linewidth или lw число с плавающей точкой или None
path_effects AbstractPathEffect
picker None или bool или число с плавающей точкой или вызываемый объект
rasterized bool
sketch_params (масштаб: float, длина: float, случайность: float)
snap bool или None
transform Transform
url строка
visible bool
zorder число с плавающей точкой
__init__(xy, width, height, angle=0.0, theta1=0.0, theta2=360.0, **kwargs)[source]
Параметры:
xy(float, float)

Центр эллипса.

widthfloat

Длина горизонтальной оси.

heightfloat

Длина вертикальной оси.

anglefloat

Поворот эллипса в градусах (против часовой стрелки).

theta1, theta2float, по умолчанию: 0, 360

Начальный и конечный углы дуги в градусах. Эти значения относятся к angle, например, если angle = 45 и theta1 = 90, абсолютный начальный угол составляет 135. По умолчанию theta1 = 0, theta2 = 360, т.е. полный эллипс. Дуга рисуется против часовой стрелки. Углы, большие или равные 360 или меньшие 0, представлены эквивалентным углом в диапазоне [0, 360), взятым по модулю 360 от входного значения.

Другие параметры:
**kwargsPatch свойства

Большинство свойств Patch поддерживаются в качестве ключевых аргументов, за исключением fill и facecolor, поскольку заполнение не поддерживается.

Свойство Описание
agg_filter функция фильтра, которая принимает (m, n, 3) массив с плавающей точкой и значение dpi, и возвращает (m, n, 3) массив
alpha скаляр или None
animated bool
antialiased или aa неизвестно
capstyle CapStyle или {'butt', 'projecting', 'round'}
clip_box Bbox
clip_on bool
clip_path Patch или (Path, Transform) или None
color цвет
contains неизвестно
edgecolor или ec цвет или None или 'auto'
facecolor или fc цвет или None
figure Figure
fill bool
gid строка
hatch {'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}
in_layout bool
joinstyle JoinStyle или {'miter', 'round', 'bevel'}
label объект
linestyle или ls {'-', '--', '-.', ':', '', (смещение, последовательность включения-выключения), ...}
linewidth или lw float или None
path_effects AbstractPathEffect
picker None или bool или float или вызываемый объект
rasterized bool
sketch_params (масштаб: float, длина: float, случайность: float)
snap bool или None
transform Transform
url строка
visible bool
zorder float
__module__ = 'matplotlib.patches'
__str__()[source]

Возвращает str(self).

draw(renderer)[source]

Отрисовка дуги на заданном renderer.

Примечания

Эллипсы обычно отрисовываются с использованием приближения, в котором используются восемь кубических сплайнов Безье. Погрешность этого приближения составляет 1,89818e-6, согласно этому неподтвержденному источнику:

Lancaster, Don. Приближение окружности или эллипса с использованием четырех кубических сплайнов Безье.

https://www.tinaja.com/glib/ellipse4.pdf

Существует случай, когда очень большие эллипсы необходимо отрисовывать с высокой точностью, а отрисовка всего эллипса достаточным количеством сегментов (либо сплайнами, либо отрезками прямых) слишком затратна. Поэтому в случае, когда любой из радиусов эллипса достаточно велик, чтобы погрешность приближения сплайном была видна (больше одного пикселя отклонения от идеала), используется другой метод.

В этом случае отрисовываются только видимые части эллипса, причем каждая видимая дуга использует фиксированное количество сегментов сплайна (8). Алгоритм работает следующим образом:

  1. Определяются точки пересечения эллипса с ограничивающей рамкой осей координат. (Это делается путем выполнения обратного преобразования ограничивающей рамки осей координат таким образом, чтобы она относилась к единичной окружности - это делает вычисление пересечения намного проще, чем прямое вычисление пересечения вращающегося эллипса).

    При этом используется алгоритм "линии, пересекающей окружность" из:

    Vince, John. Геометрия для компьютерной графики: формулы, примеры и доказательства. Лондон: Springer-Verlag, 2005.

  2. Вычисляются углы каждой из точек пересечения.
  3. Проходя против часовой стрелки, начиная с положительного направления оси x, каждая из видимых дуговых сегментов между парами вершин отрисовывается с использованием метода приближения дуги Безье, реализованного в Path.arc.

Примеры использования matplotlib.patches.Arc

Scale invariant angle label

Метка угла, инвариантная к масштабу

Ellipse With Units

Эллипс с единицами

Sample plots in Matplotlib

Примеры графиков в Matplotlib

© 2012–2021 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.4.3/api/_as_gen/matplotlib.patches.Arc.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API