Spec-Zone.ru › Matplotlib 2.2

matplotlib.patches.Arc

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

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

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

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

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

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

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

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

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

Spec-Zone.ru

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