Spec-Zone.ru › Matplotlib 2.1

matplotlib.patches.Arc

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

Эллиптическая дуга. Из-за различных оптимизаций она не может быть залита.

Дуга должна использоваться в экземпляре Axes — её нельзя добавить напрямую в Figure, — так как она оптимизирована для отображения только сегментов, которые находятся внутри области отображения осей с высоким разрешением.

Поддерживаются следующие аргументы:

xy
центр эллипса
width
длина горизонтальной оси
height
длина вертикальной оси
angle
угол поворота в градусах (против часовой стрелки)
theta1
начальный угол дуги в градусах
theta2
конечный угол дуги в градусах

Если theta1 и theta2 не указаны, дуга образует полный эллипс.

Допустимые ключевые слова:

Свойство Описание
agg_filter неизвестно
alpha число с плавающей точкой или None
animated [True | False]
antialiased или aa [True | False] или None для значения по умолчанию
capstyle [‘butt’ | ‘round’ | ‘projecting’]
clip_box экземпляр matplotlib.transforms.Bbox
clip_on [True | False]
clip_path [ (Path, Transform) | Patch | None ]
color спецификация цвета matplotlib
contains функция-обработчик
edgecolor или ec спецификация цвета mpl, None, ‘none’, или ‘auto’
facecolor или fc спецификация цвета mpl или None для значения по умолчанию, или ‘none’ для отсутствия цвета
figure экземпляр matplotlib.figure.Figure
fill [True | False]
gid строка-идентификатор
hatch [‘/’ | ‘' | ‘|’ | ‘-‘ | ‘+’ | ‘x’ | ‘o’ | ‘O’ | ‘.’ | ‘*’]
joinstyle [‘miter’ | ‘round’ | ‘bevel’]
label строка или любой печатаемый объект с преобразованием ‘%s’
linestyle или ls [‘solid’ | ‘dashed’, ‘dashdot’, ‘dotted’ | (смещение, последовательность отрезков) | '-' | '--' | '-.' | ':' | 'None' | ' ' | '']
linewidth или lw число с плавающей точкой или None для значения по умолчанию
path_effects неизвестно
picker [None|число с плавающей точкой|логическое значение|функция-обработчик]
rasterized [True | False | None]
sketch_params неизвестно
snap неизвестно
transform экземпляр Transform
url строка-ссылка
visible [True | False]
zorder любое число
draw(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–2017 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
http://matplotlib.org/2.1.0/api/_as_gen/matplotlib.patches.Arc.html

Spec-Zone.ru

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