matplotlib.patches.Arc#

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

基类: Ellipse

椭圆弧,即椭圆的一个片段。

由于内部优化,此弧线无法填充。

参数:
xy(浮点数, 浮点数)

椭圆的中心。

width浮点数

水平轴的长度。

height浮点数

垂直轴的长度。

angle浮点数

椭圆的旋转角度(逆时针,单位为度)。

theta1, theta2浮点数, 默认值: 0, 360

弧线的起始和结束角度,单位为度。这些值相对于 *angle*,例如,如果 *angle* = 45 且 *theta1* = 90,则绝对起始角度为 135。默认 *theta1* = 0,*theta2* = 360,即一个完整的椭圆。弧线以逆时针方向绘制。大于或等于 360 度或小于 0 度的角度通过对输入值取模 360 表示为 [0, 360) 范围内的等效角度。

其他参数:
**kwargsPatch 属性

大多数 Patch 属性都支持作为关键字参数,但 *fill* 和 *facecolor* 除外,因为不支持填充。

属性

描述

agg_filter

一个过滤函数,它接受一个 (m, n, 3) 浮点数组和一个 dpi 值,并返回一个 (m, n, 3) 数组以及图像左下角的两个偏移量

alpha

未知

animated

布尔值

antialiasedaa

布尔值或 None

capstyle

CapStyle 或 {'butt', 'projecting', 'round'}

clip_box

BboxBase 或 None

clip_on

布尔值

clip_path

Patch 或 (Path, Transform) 或 None

color

color

edgecolorec

颜色 或 None

facecolorfc

颜色 或 None

figure

FigureSubFigure

fill

布尔值

gid

字符串

hatch

{'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}

hatch_linewidth

未知

in_layout

布尔值

joinstyle

JoinStyle 或 {'miter', 'round', 'bevel'}

label

对象

linestylels

{'-', '--', '-.', ':', '', (offset, on-off-seq), ...}

linewidthlw

浮点数或 None

mouseover

布尔值

path_effects

AbstractPathEffect 列表

picker

None 或 布尔值 或 浮点数 或 可调用对象

rasterized

布尔值

sketch_params

(scale: 浮点数, length: 浮点数, randomness: 浮点数)

snap

布尔值或 None

transform

变换

url

字符串

visible

布尔值

zorder

浮点数

draw(renderer)[源]#

将弧线绘制到指定的 *renderer*。

备注

椭圆通常使用八条三次贝塞尔样条曲线的近似法绘制。根据这个未经证实的消息来源,此近似的误差为 1.89818e-6:

Lancaster, Don. 使用四条贝塞尔三次样条曲线逼近圆形或椭圆形。

https://www.tinaja.com/glib/ellipse4.pdf

有一种用例,需要以非常高的精度绘制非常大的椭圆,并且用足够的线段(样条线或线段)渲染整个椭圆的成本过高。因此,当椭圆的任一半径足够大,使得样条曲线近似的误差将可见(大于理想情况下的一像素偏移)时,将使用不同的技术。

在这种情况下,只绘制椭圆的可见部分,每个可见弧线使用固定数量的样条曲线段(8条)。算法过程如下:

  1. 定位椭圆与坐标轴(或图形)边界框相交的点。(这是通过对边界框执行逆变换来完成的,使其相对于单位圆——这比直接进行旋转椭圆交点计算容易得多。)

    这使用了来自以下来源的“线与圆相交”算法:

    Vince, John. 计算机图形学几何:公式、示例与证明。伦敦:Springer-Verlag,2005。

  2. 计算每个交点的角度。

  3. 从正 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>, hatch_linewidth=<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>)[源]#

一次性设置多个属性。

支持的属性包括:

属性

描述

agg_filter

一个过滤函数,它接受一个 (m, n, 3) 浮点数组和一个 dpi 值,并返回一个 (m, n, 3) 数组以及图像左下角的两个偏移量

alpha

浮点数或 None

angle

浮点数

animated

布尔值

antialiasedaa

布尔值或 None

capstyle

CapStyle 或 {'butt', 'projecting', 'round'}

居中

(浮点数, 浮点数)

clip_box

BboxBase 或 None

clip_on

布尔值

clip_path

Patch 或 (Path, Transform) 或 None

color

color

edgecolorec

颜色 或 None

facecolorfc

颜色 或 None

figure

FigureSubFigure

fill

布尔值

gid

字符串

hatch

{'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}

hatch_linewidth

未知

height

浮点数

in_layout

布尔值

joinstyle

JoinStyle 或 {'miter', 'round', 'bevel'}

label

对象

linestylels

{'-', '--', '-.', ':', '', (offset, on-off-seq), ...}

linewidthlw

浮点数或 None

mouseover

布尔值

path_effects

AbstractPathEffect 列表

picker

None 或 布尔值 或 浮点数 或 可调用对象

rasterized

布尔值

sketch_params

(scale: 浮点数, length: 浮点数, randomness: 浮点数)

snap

布尔值或 None

transform

变换

url

字符串

visible

布尔值

width

浮点数

zorder

浮点数

使用 matplotlib.patches.Arc 的示例#

比例不变角度标签

比例不变角度标签

带单位的椭圆

带单位的椭圆