Spec-Zone.ru › Matplotlib 3.1

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)

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

width : float

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

height : float

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

angle : float

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

theta1, theta2 : float, optional

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

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

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

Свойство Описание
agg_filter функция фильтра, которая принимает (m, n, 3) массив чисел с плавающей точкой и значение dpi и возвращает (m, n, 3) массив
alpha число с плавающей точкой или None
animated bool
antialiased или aa неизвестно
capstyle {'butt', 'round', 'projecting'}
clip_box Bbox
clip_on bool
clip_path [(Path, Transform) | Patch | 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 {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}
linewidth или lw число с плавающей точкой или None
path_effects AbstractPathEffect
picker None или bool или число с плавающей точкой или вызываемый объект
rasterized bool или None
sketch_params (масштаб: число с плавающей точкой, длина: число с плавающей точкой, случайность: число с плавающей точкой)
snap bool или None
transform Transform
url строка
visible bool
zorder число с плавающей точкой
END_OF_DOCUMENT_MARKER
draw(self, renderer) [source]

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

Примечания

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

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

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

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

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

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

    Для этого используется алгоритм "пересечения прямой и окружности" из:

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

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

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

../../_images/sphx_glr_ellipse_with_units_thumb.png

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

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

Spec-Zone.ru

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