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Эллиптическая дуга. Из-за различных оптимизаций её нельзя заполнить.
Дуга должна использоваться в экземпляре
Axes— её нельзя добавить непосредственно вFigure, поскольку она оптимизирована для рендеринга только сегментов, находящихся внутри области осей с высоким разрешением.Поддерживаются следующие аргументы:
- xy
- центр эллипса
- width
- длина горизонтальной оси
- height
- длина вертикальной оси
- angle
- угол поворота в градусах (против часовой стрелки)
- theta1
- начальный угол дуги в градусах
- theta2
- конечный угол дуги в градусах
Если theta1 и theta2 не указаны, дуга будет представлять собой полный эллипс.
Допустимые ключевые слова:
Свойство Описание agg_filterфункция фильтра, которая принимает массив (m, n, 3) с плавающей точкой и значение dpi и возвращает массив (m, n, 3) alphaчисло с плавающей точкой или None animatedбулево значение antialiasedнеизвестно capstyle{'butt', 'round', 'projecting'} clip_boxBboxclip_onбулево значение clip_path[( Path,Transform) |Patch| None]colorцвет containsвызываемый объект edgecolorцвет или None или 'auto' facecolorцвет или None figureFigurefillбулево значение gidстрока hatch{'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'} in_layoutбулево значение joinstyle{'miter', 'round', 'bevel'} labelобъект linestyle{'-', '--', '-.', ':', '', (offset, on-off-seq), ...} linewidthчисло с плавающей точкой или None для значения по умолчанию path_effectsAbstractPathEffectpickerNone или булево значение или число с плавающей точкой или вызываемый объект rasterizedбулево значение или None sketch_params(масштаб: число с плавающей точкой, длина: число с плавающей точкой, случайность: число с плавающей точкой) snapбулево значение или None transformTransformurlстрока visibleбулево значение 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/3.0.0/api/_as_gen/matplotlib.patches.Arc.html