Spec-Zone.ru › Matplotlib 3.3

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, default: 0, 360

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

Другие параметры:
**kwargsPatch properties

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

Свойство Описание
agg_filter функция фильтра, которая принимает массив float (m, n, 3) и значение dpi и возвращает массив (m, n, 3)
alpha float или None
animated bool
antialiased или aa неизвестно
capstyle {'butt', 'round', 'projecting'}
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 {'miter', 'round', 'bevel'}
label объект
linestyle или ls {'-', '--', '-.', ':', '', (смещение, последовательность включения-выключения), ...}
linewidth или lw float или None
path_effects AbstractPathEffect
picker None или bool или вызываемая функция
rasterized bool или None
sketch_params (масштаб: float, длина: float, случайность: float)
snap bool или None
transform Transform
url строка
visible bool
zorder float
__init__(self, xy, width, height, angle=0.0, theta1=0.0, theta2=360.0, **kwargs) [source]
Параметры:
xy(float, float)

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

widthfloat

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

heightfloat

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

anglefloat

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

theta1, theta2float, default: 0, 360

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

Другие параметры:
**kwargsPatch properties

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

Свойство Описание
agg_filter функция фильтра, которая принимает массив (m, n, 3) float и значение dpi и возвращает массив (m, n, 3)
alpha float или None
animated bool
antialiased или aa неизвестно
capstyle {'butt', 'round', 'projecting'}
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 str
hatch {'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}
in_layout bool
joinstyle {'miter', 'round', 'bevel'}
label объект
linestyle или ls {'-', '--', '-.', ':', '', (смещение, последовательность вкл/выкл), ...}
linewidth или lw float или None
path_effects AbstractPathEffect
picker None или bool или вызываемый объект
rasterized bool или None
sketch_params (масштаб: float, длина: float, случайность: float)
snap bool или None
transform Transform
url str
visible bool
zorder float
__module__ = 'matplotlib.patches'
__str__(self) [source]

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

draw(self, renderer) [source]

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

Примечания

Эллипсы обычно рисуются с помощью приближения, использующего восемь кубических кривых Безье. Погрешность этого приближения составляет 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

Ellipse With Units

Эллипс с единицами измерения

Sample plots in Matplotlib

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

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

Spec-Zone.ru

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