matplotlib.patches.Arc
- classmatplotlib.patches.Arc(xy, width, height, *, angle=0.0, theta1=0.0, theta2=360.0, **kwargs)[source]
-
Bases:
EllipseДуга эллипса, т.е. сегмент эллипса.
Из-за внутренних оптимизаций, дугу нельзя заполнить.
- Параметры:
-
- xy(float, float)
-
Центр эллипса.
- widthfloat
-
Длина горизонтальной оси.
- heightfloat
-
Длина вертикальной оси.
- anglefloat
-
Поворот эллипса в градусах (против часовой стрелки).
- theta1, theta2float, по умолчанию: 0, 360
-
Начальный и конечный углы дуги в градусах. Эти значения относительны к angle, например, если angle = 45 и theta1 = 90, то абсолютный начальный угол составляет 135. По умолчанию theta1 = 0, theta2 = 360, т.е. полный эллипс. Дуга рисуется против часовой стрелки. Углы, большие или равные 360, или меньшие 0, представлены эквивалентным углом в диапазоне [0, 360), взятым по модулю 360 от входного значения.
- Другие параметры:
-
-
**kwargs
Patchсвойства -
Большинство свойств
Patchподдерживаются в качестве ключевых аргументов, за исключением fill и facecolor, так как заполнение не поддерживается.Свойство
Описание
функция фильтра, которая принимает массив (m, n, 3) float и значение dpi, и возвращает массив (m, n, 3) и два смещения с нижнего левого угла изображения
неизвестно
bool
antialiasedили aabool или None
CapStyleили {'butt', 'projecting', 'round'}BboxBaseили Nonebool
Patch или (Path, Transform) или None
цвет
edgecolorили ecцвет или None
facecolorили fcцвет или None
bool
str
{'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}
bool
JoinStyleили {'miter', 'round', 'bevel'}объект
linestyleили ls{'-', '--', '-.', ':', '', (offset, on-off-seq), ...}
linewidthили lwfloat или None
bool
список
AbstractPathEffectNone или bool или float или вызываемая функция
bool
(scale: float, length: float, randomness: float)
bool или None
str
bool
float
-
**kwargs
- draw(renderer)[source]
-
Отрисовка дуги в заданном renderer.
Примечания
Эллипсы обычно рисуются с использованием приближения, которое использует восемь кубических кривых Безье. Погрешность этого приближения составляет 1,89818e-6, согласно этому неподтвержденному источнику:
Lancaster, Don. Приближение окружности или эллипса с использованием четырех кубических кривых Безье.
https://www.tinaja.com/glib/ellipse4.pdf
Существует случай, когда очень большие эллипсы должны быть нарисованы с высокой точностью, и слишком дорого обходится отрисовка всего эллипса с достаточным количеством сегментов (будь то сплайны или отрезки прямых). Поэтому, в случае, когда любой из радиусов эллипса достаточно велик, чтобы погрешность приближения сплайном была заметна (больше одного пикселя смещения от идеального), используется другой метод.
В этом случае рисуются только видимые части эллипса, причем каждая видимая дуга использует фиксированное количество сегментов сплайна (8). Алгоритм выполняется следующим образом:
-
Определяются точки пересечения эллипса с осями (или рамкой фигуры). (Это делается путём применения обратного преобразования к рамке, таким образом, чтобы она относилась к единичной окружности — это делает вычисление пересечений значительно проще, чем непосредственное вычисление пересечений эллипса с вращением.)
Для этого используется алгоритм «линия, пересекающая окружность» из:
Vince, John. Геометрия для компьютерной графики: формулы, примеры и доказательства. Лондон: Springer-Verlag, 2005.
- Вычисляются углы каждой из точек пересечения.
- Проходя против часовой стрелки, начиная с положительного направления оси X, каждый из видимых сегментов дуги между парами вершин рисуется с использованием метода приближения дуги Безье, реализованного в
Path.arc.
-
- set(*, agg_filter=<UNSET>, alpha=<UNSET>, angle=<UNSET>, animated=<UNSET>, antialiased=<UNSET>, capstyle=<UNSET>, center=<UNSET>, clip_box=<UNSET>, clip_on=<UNSET>, clip_path=<UNSET>, color=<UNSET>, edgecolor=<UNSET>, facecolor=<UNSET>, fill=<UNSET>, gid=<UNSET>, hatch=<UNSET>, height=<UNSET>, in_layout=<UNSET>, joinstyle=<UNSET>, label=<UNSET>, linestyle=<UNSET>, linewidth=<UNSET>, mouseover=<UNSET>, path_effects=<UNSET>, picker=<UNSET>, rasterized=<UNSET>, sketch_params=<UNSET>, snap=<UNSET>, transform=<UNSET>, url=<UNSET>, visible=<UNSET>, width=<UNSET>, zorder=<UNSET>)[source]
-
Установить сразу несколько свойств.
Поддерживаемые свойства:
Свойство
Описание
Функция фильтра, которая принимает массив чисел с плавающей точкой (m, n, 3) и значение dpi, и возвращает массив чисел с плавающей точкой (m, n, 3) и два смещения от нижнего левого угла изображения.
Скаляр или None
Число с плавающей точкой
Булево значение
antialiasedили aaБулево значение или None
CapStyleили {'butt', 'projecting', 'round'}(число с плавающей точкой, число с плавающей точкой)
BboxBaseили NoneБулево значение
Объект Patch или (объект Path, преобразование) или None
Цвет
edgecolorили ecЦвет или None
facecolorили fcЦвет или None
Булево значение
Строка
{'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}
Число с плавающей точкой
Булево значение
JoinStyleили {'miter', 'round', 'bevel'}Объект
linestyleили ls{'-', '--', '-.', ':', '', (смещение, последовательность включения-выключения), ...}
linewidthили lwЧисло с плавающей точкой или None
Булево значение
Список
AbstractPathEffectNone или булево значение или число с плавающей точкой или вызываемая функция
Булево значение
(масштаб: число с плавающей точкой, длина: число с плавающей точкой, случайность: число с плавающей точкой)
Булево значение или None
Строка
Булево значение
Число с плавающей точкой
Число с плавающей точкой
-
Примеры использования matplotlib.patches.Arc
© 2012–2023 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.8.4/api/_as_gen/matplotlib.patches.Arc.html