matplotlib.path

用于处理整个matplotlib中使用的多段线的模块。

Matplotlib中折线处理的主要类是 Path . 几乎所有的矢量图都利用了 Path 在绘制管道的某个地方。

当一个 Path 无法绘制实例本身,一些 Artist 子类,例如 PathPatchPathCollection ,方便使用 Path 形象化。

class matplotlib.path.Path(vertices, codes=None, _interpolation_steps=1, closed=False, readonly=False)[源代码]

基类:object

一系列可能断开、可能闭合的直线段和曲线段。

底层存储由两个并行的numpy数组组成:

  • 顶点 :nx2浮点顶点数组
  • 代码 :顶点类型的N长度uint8数组,或无

这两个数组在第一维中的长度总是相同的。例如,要表示三次曲线,必须提供三个顶点和三个代码 CURVE3 .

代码类型为:

  • STOP1顶点(忽略)
    整个路径结尾的标记(当前不需要和忽略)
  • MOVETO1顶点
    拿起笔,移动到给定的顶点。
  • LINETO1顶点
    从当前位置到给定顶点画一条线。
  • CURVE31个控制点,1个端点
    从给定控制点的当前位置到给定终点绘制二次贝塞尔曲线。
  • CURVE42个控制点,1个端点
    用给定的控制点从当前位置到给定的终点绘制一条三次贝塞尔曲线。
  • CLOSEPOLY1顶点(忽略)
    绘制一条直线段到当前多段线的起点。

如果 代码 为“无”,则将其解释为 MOVETO 然后是一系列 LINETO .

路径对象的用户不应直接访问顶点和代码数组。相反,他们应该使用 iter_segmentscleaned 获取顶点/代码对。这尤其有助于始终如一地处理 代码 没有。

路径对象的某些行为可以由rcParams控制。请参阅其键以“path”开头的rcParams。

注解

顶点和代码数组应该被视为不可变的——在构造函数前面有许多优化和假设,这些优化和假设在数据更改时不会更改。

使用给定的顶点和代码创建新路径。

参数:
vertices类数组

这个 (N, 2) 浮点数组、屏蔽数组或表示路径顶点的成对序列。

如果 顶点 包含屏蔽值,这些值将转换为NaN,然后由agg pathiterator和其他路径数据使用者正确处理,例如 iter_segments() .

codes数组相似或无,可选

n-表示路径代码的长度数组整数。如果不是“无”,则代码的长度必须与顶点的长度相同。如果没有, 顶点 将被视为一系列线段。

_interpolation_steps可选的

用作某些投影(如极坐标)的提示,该路径应在绘制前立即进行线性插值。此属性主要是实现细节,不用于公共用途。

closed可选的布尔

如果 代码 如果为“无”且“闭合”,则顶点将被视为闭合多边形的线段。请注意,最后一个顶点将被忽略(因为相应的代码将设置为CLOSEPOLY)。

readonly可选的布尔

使路径的行为不可变,并将顶点和代码设置为只读数组。

CLOSEPOLY = 79
CURVE3 = 3
CURVE4 = 4
LINETO = 2
MOVETO = 1
NUM_VERTICES_FOR_CODE = {0: 1, 1: 1, 2: 1, 3: 2, 4: 3, 79: 1}

将路径代码映射到代码期望的顶点数的字典。

STOP = 0
classmethod arc(theta1, theta2, n=None, is_wedge=False)[源代码]

从角度返回单位圆弧 THEA1TaTa2 (程度)

TaTa2 展开以在360度范围内产生最短的弧。也就是说,如果 TaTa2 > THEA1 +360,弧将来自 THEA1TaTa2 -不是一个完整的圆圈加上一些额外的重叠。

如果 n 提供了要生成的样条曲线段数。如果 n 不提供,样条曲线段的数量根据 THEA1TaTa2 .

classmethod circle(center=(0.0, 0.0), radius=1.0, readonly=False)[源代码]

返回A Path 表示给定半径和中心的圆。

参数:
center(float,float),默认值:(0,0)

圆的中心。

radius浮点,默认值:1

圆的半径。

readonly布尔

创建路径实例时,创建的路径是否应设置“readonly”参数。

笔记

使用8条三次贝塞尔曲线近似圆,如中所述

cleaned(transform=None, remove_nans=False, clip=None, quantize=<deprecated parameter>, simplify=False, curves=False, stroke_width=1.0, snap=False, sketch=None)[源代码]

返回一个新路径,根据参数清除顶点和代码。

参见

Path.iter_segments
有关关键字参数的详细信息。
clip_to_bbox(bbox, inside=True)[源代码]

将路径剪辑到给定的边界框。

路径必须由一个或多个闭合多边形组成。对于未闭合的路径,此算法将无法正常工作。

如果 里面True 夹在盒子的内侧,否则夹在盒子的外侧。

code_type

alias of numpy.uint8

property codes

中的代码列表 Path 作为一维numpy数组。每个代码都是 STOPMOVETOLINETOCURVE3CURVE4CLOSEPOLY . 对于对应于多个顶点的代码 (CURVE3CURVE4 ,该代码将重复,以便 self.verticesself.codes 总是一样的。

contains_path(path, transform=None)[源代码]

返回此(闭合)路径是否完全包含给定路径。

如果 转型 不是 None ,以便在检查路径之前进行转换。

contains_point(point, transform=None, radius=0.0)[源代码]

返回(闭合)路径是否包含给定点。

参数:
point(浮标,浮标)

要检查的点(x,y)。

转型matplotlib.transforms.Transform 可选matplotlib.transforms.transform,可选

如果没有 None 将与 self 改造者 转型 也就是说,为了一个正确的检查, 转型 应将路径转换为 .

radius浮点,默认值:0

在路径上添加一个附加边距,坐标为 . 路径以切线方式延伸 radius/2 ;即,如果您要绘制线宽为的路径 半径 ,线上的所有点仍被视为包含在该区域内。相反,负值会缩小区域:虚线上的点将被视为区域之外的点。

返回:
布尔
contains_points(points, transform=None, radius=0.0)[源代码]

返回(闭合)路径是否包含给定点。

参数:
points(N,2)阵列

检查要点。列包含x和y值。

转型matplotlib.transforms.Transform 可选matplotlib.transforms.transform,可选

如果没有 None 将与 self 改造者 转型 也就是说,为了一个正确的检查, 转型 应将路径转换为 .

radius浮点,默认值:0。

在路径上添加一个附加边距,坐标为 . 路径以切线方式延伸 radius/2 ;即,如果您要绘制线宽为的路径 半径 ,线上的所有点仍被视为包含在该区域内。相反,负值会缩小区域:虚线上的点将被视为区域之外的点。

返回:
长度N布尔数组
copy()

返回一份 Path 将与源共享顶点和代码 Path .

deepcopy(memo=None)

退回一份 Path . 这个 Path 不会是只读的,即使源 Path 是。

get_extents(transform=None, **kwargs)[源代码]

把盒子从小路上拿开。

参数:
transformmatplotlib.transforms.transform,可选

转换以在计算范围(如果有)之前应用于路径。

**kwargs

转发至 iter_bezier .

返回:
matplotlib.transforms.Bbox

路径Bbox的范围( [[X分钟,Y分钟]] , [X最大,Y最大] )

static hatch(hatchpattern, density=6)[源代码]

给定一个图案填充说明符, 孵化模式 ,生成可在重复图案填充图案中使用的路径。 密度 是每平方单位的行数。

interpolated(steps)[源代码]

返回重新采样为nx步长的新路径。

LINETO以外的代码处理不正确。

intersects_bbox(bbox, filled=True)[源代码]

返回此路径是否与给定路径相交 Bbox .

如果 填满 如果路径完全封闭 Bbox (即路径被视为已填充)。

边界框始终被视为已填充。

intersects_path(other, filled=True)[源代码]

返回此路径是否与另一给定路径相交。

如果 填满 如果为True,则如果一条路径完全封闭另一条路径(即,路径被视为已填充),则返回True。

iter_bezier(**kwargs)[源代码]

迭代路径中的每条贝塞尔曲线(包括直线)。

参数:
**kwargs

转发至 iter_segments .

产量:
Bmatplotlib.bezier.BezierSegment

构成当前路径的贝塞尔曲线。特别注意,独立点是0阶贝塞尔曲线,直线是1阶贝塞尔曲线(有两个控制点)。

codePath.code_type

描述返回哪种曲线的代码。路径.移动到, 路径.LINETO, 路径.曲线3, 路径.曲线4分别对应于具有1、2、3和4个控制点的贝塞尔曲线。路径.CLOSEPOLY是一个路径.LINETO根据当前笔划的起点/终点正确选择控制点。

iter_segments(transform=None, remove_nans=True, clip=None, snap=False, stroke_width=1.0, simplify=None, curves=True, sketch=None)[源代码]

在所有路径上迭代曲线段。

每次迭代返回一对 (vertices, code) 在哪里 vertices 是1-3个坐标对的序列,并且 code 是一个 Path 代码。

此外,此方法可以提供许多标准的清理和到路径的转换。

参数:
转型 : None or Transform无或

如果不是“无”,则给定的仿射变换将应用于路径。

remove_nans可选的布尔

是否从路径中删除所有nan并使用MOVETO命令跳过它们。

clip无或(float,float,float,float),可选

如果不是“无”,则必须是一个四元组(x1、y1、x2、y2),定义要在其中剪切路径的矩形。

snap无或bool,可选

如果为True,则将所有节点捕捉到像素;如果为False,则不捕捉它们。如果没有,如果路径仅包含与x或y轴平行的线段,且不超过1024条,则捕捉。

stroke_width可选浮动

正在绘制的笔划的宽度(用于路径捕捉)。

simplify无或bool,可选

是否通过删除不影响路径外观的顶点来简化路径。如果没有,请使用 should_simplify 属性。另请参见 rcParams["path.simplify"] (default: True) 和 rcParams["path.simplify_threshold"] (default: 0.111111111111) .

curves可选的布尔

如果为True,则曲线段将作为曲线段返回。如果为False,则所有曲线将转换为线段。

sketch无或序列,可选

如果不是“无”,则必须是表示草图参数的3元组形式(比例、长度、随机性)。

classmethod make_compound_path(*args)[源代码]

从路径对象列表生成复合路径。盲目地删除所有路径.停止控制点。

classmethod make_compound_path_from_polys(XY)[源代码]

生成复合路径对象以绘制多个边数相等的多边形,xy是一个(numpolys x numsides x 2)numpy顶点数组。返回对象是 Path

(Source code _, pngpdf

../_images/histogram_path_00_00.png
property readonly

True 如果 Path 是只读的。

property should_simplify

True 如果需要简化顶点数组。

property simplify_threshold

像素差的分数,低于该分数的顶点将被简化。

to_polygons(transform=None, width=0, height=0, closed_only=True)[源代码]

将此路径转换为多边形或多段线列表。每个多边形/多段线都是一个nx2顶点数组。换句话说,每个多边形都没有 MOVETO 指示或曲线。这对于在不支持复合路径或贝塞尔曲线的后端显示很有用。

如果 宽度高度 都是非零的,则线条将被简化,以便(0,0),(宽度,高度)之外的顶点将被剪裁。

如果 closed_onlyTrue (默认)将只返回最后一个点与第一个点相同的闭合多边形。路径中任何未闭合的多段线都将显式闭合。如果 closed_onlyFalse ,路径中的任何未闭合多边形都将作为未闭合多边形返回,闭合多边形将通过将最后一个点设置为与第一个点相同的方式显式闭合返回。

transformed(transform)[源代码]

返回路径的转换副本。

参见

matplotlib.transforms.TransformedPath
一个专门的路径类,它将缓存转换后的结果,并在转换更改时自动更新。
classmethod unit_circle()[源代码]

返回只读 Path 单位圆的。

在大多数情况下, Path.circle() 会是你想要的。

classmethod unit_circle_righthalf()[源代码]

返回A Path 单位圆的右半部分。

Path.circle 用于参考所使用的近似值。

classmethod unit_rectangle()[源代码]

返回A Path 单位矩形从(0,0)到(1,1)的实例。

classmethod unit_regular_asterisk(numVertices)[源代码]

返回A Path 对于给定numVertices和radius为1.0且以(0,0)为中心的单位普通星号。

classmethod unit_regular_polygon(numVertices)[源代码]

返回A Path 给定单位正多边形的实例 数字符号 使外切圆的半径为1.0,以(0,0)为中心。

classmethod unit_regular_star(numVertices, innerCircle=0.5)[源代码]

返回A Path 对于给定numVertices和半径为1.0,以(0,0)为中心的单位规则星。

property vertices

中的顶点列表 Path 作为nx2 numpy数组。

classmethod wedge(theta1, theta2, n=None)[源代码]

从角度返回装置圆楔 THEA1TaTa2 (程度)

TaTa2 在360度范围内展开以产生最短的楔形。也就是说,如果 TaTa2 > THEA1 +360,楔子将来自 THEA1TaTa2 -不是一个完整的圆圈加上一些额外的重叠。

如果 n 提供了要生成的样条曲线段数。如果 n 不提供,样条曲线段的数量根据 THEA1TaTa2 .

Path.arc 用于参考所使用的近似值。

matplotlib.path.get_path_collection_extents(master_transform, paths, transforms, offsets, offset_transform)[源代码]

给定一个序列 Path s, Transform 对象和偏移,如在 PathCollection ,返回封装所有元素的边界框。

参数:
master_transformTransform变换

全局转换应用于所有路径。

路径 名单 Path名单
变换 名单 Affine2D名单
offsets(n,2)类似阵列
offset_transformAffine2D仿射2d

偏移路径之前应用于偏移的变换。

笔记

方式 路径变换偏移量 组合的方法与集合的方法相同:每个都是独立迭代的,因此如果有3个路径、2个变换和1个偏移,则它们的组合如下所示:

(a,a,a),(b,b,a),(c,a,a)