Spec-Zone.ru › Matplotlib 3.0

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_box Bbox
clip_on булево значение
clip_path [(Path, Transform) | Patch | None]
color цвет
contains вызываемый объект
edgecolor цвет или None или 'auto'
facecolor цвет или None
figure Figure
fill булево значение
gid строка
hatch {'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}
in_layout булево значение
joinstyle {'miter', 'round', 'bevel'}
label объект
linestyle {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}
linewidth число с плавающей точкой или None для значения по умолчанию
path_effects AbstractPathEffect
picker None или булево значение или число с плавающей точкой или вызываемый объект
rasterized булево значение или None
sketch_params (масштаб: число с плавающей точкой, длина: число с плавающей точкой, случайность: число с плавающей точкой)
snap булево значение или None
transform Transform
url строка
visible булево значение
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/3.0.0/api/_as_gen/matplotlib.patches.Arc.html

Spec-Zone.ru

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