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 animatedbool antialiasedили aabool или None capstyle['butt' | 'round' | 'projecting'] clip_boxэкземпляр Bboxclip_onbool clip_path[( Path,Transform) |Patch| None]colorспецификация цвета matplotlib containsвызываемая функция edgecolorили ecспецификация цвета mpl, None, 'none', или 'auto' facecolorили fcспецификация цвета mpl или None для значения по умолчанию, или 'none' для отсутствия цвета figureэкземпляр Figurefillbool gidстрока-идентификатор hatch['/' | '\' | '|' | '-' | '+' | 'x' | 'o' | 'O' | '.' | '*'] joinstyle['miter' | 'round' | 'bevel'] labelобъект linestyleили ls['solid' | 'dashed', 'dashdot', 'dotted' | (смещение, последовательность выкл-вкл штрихов) | '-'|'--'|'-.'|':'|'None'|' '|'']linewidthили lwчисло с плавающей точкой или None для значения по умолчанию path_effectsAbstractPathEffectpicker[None | bool | число с плавающей точкой | вызываемая функция] rasterizedbool или None sketch_params(масштаб: число с плавающей точкой, длина: число с плавающей точкой, случайность: число с плавающей точкой) snapbool или None transformTransformurlстрока-ссылка visiblebool zorderчисло с плавающей точкой -
draw(renderer)[source] -
Эллипсы обычно рисуются с помощью приближения, использующего восемь кубических сплайнов Безье. По данным этого непроверенного источника, ошибка этого приближения составляет 1.89818e-6:
Lancaster, Don. Приближение окружности или эллипса с помощью четырех кубических сплайнов Безье.
http://www.tinaja.com/glib/ellipse4.pdf
Существует случай, когда очень большие эллипсы должны быть нарисованы с высокой точностью, и слишком дорого обходится отрисовка всего эллипса с достаточным количеством сегментов (либо сплайнами, либо отрезками прямых). Поэтому, в случае, если один из радиусов эллипса достаточно велик, чтобы ошибка приближения сплайнами была заметна (больше одного пиксельного смещения от идеала), используется другой метод.
В этом случае рисуются только видимые части эллипса, и каждая видимая дуга использует фиксированное число сегментов сплайна (8). Алгоритм работает следующим образом:
-
Определяются точки, где эллипс пересекает область отображения осей. (Это делается путем выполнения обратного преобразования области отображения осей так, чтобы она относилась к единичной окружности — это значительно упрощает вычисление пересечений по сравнению с прямым вычислением пересечения эллипса с поворотом).
При этом используется алгоритм "прямой пересечения линии с окружностью" из:
Vince, John. Геометрия для компьютерной графики: формулы, примеры и доказательства. Лондон: Springer-Verlag, 2005.
- Вычисляются углы каждой из точек пересечения.
- Начиная против часовой стрелки с положительного направления оси x, каждая видимая дуга между парами вершин рисуется с использованием метода приближения дуги Безье, реализованного в
matplotlib.path.Path.arc().
-
Примеры использования matplotlib.patches.Arc
© 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