matplotlib.path
¶
用于处理整个matplotlib中使用的多段线的模块。
Matplotlib中折线处理的主要类是 Path
. 几乎所有的矢量图都利用了 Path
在绘制管道的某个地方。
当一个 Path
无法绘制实例本身,一些 Artist
子类,例如 PathPatch
和 PathCollection
,方便使用 Path
形象化。
-
class
matplotlib.path.
Path
(vertices, codes=None, _interpolation_steps=1, closed=False, readonly=False)[源代码]¶ 基类:
object
一系列可能断开、可能闭合的直线段和曲线段。
底层存储由两个并行的numpy数组组成:
- 顶点 :nx2浮点顶点数组
- 代码 :顶点类型的N长度uint8数组,或无
这两个数组在第一维中的长度总是相同的。例如,要表示三次曲线,必须提供三个顶点和三个代码
CURVE3
.代码类型为:
STOP
1顶点(忽略)- 整个路径结尾的标记(当前不需要和忽略)
MOVETO
1顶点- 拿起笔,移动到给定的顶点。
LINETO
1顶点- 从当前位置到给定顶点画一条线。
CURVE3
1个控制点,1个端点- 从给定控制点的当前位置到给定终点绘制二次贝塞尔曲线。
CURVE4
2个控制点,1个端点- 用给定的控制点从当前位置到给定的终点绘制一条三次贝塞尔曲线。
CLOSEPOLY
1顶点(忽略)- 绘制一条直线段到当前多段线的起点。
如果 代码 为“无”,则将其解释为
MOVETO
然后是一系列LINETO
.路径对象的用户不应直接访问顶点和代码数组。相反,他们应该使用
iter_segments
或cleaned
获取顶点/代码对。这尤其有助于始终如一地处理 代码 没有。路径对象的某些行为可以由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)[源代码]¶ 从角度返回单位圆弧 THEA1 到 TaTa2 (程度)
TaTa2 展开以在360度范围内产生最短的弧。也就是说,如果 TaTa2 > THEA1 +360,弧将来自 THEA1 到 TaTa2 -不是一个完整的圆圈加上一些额外的重叠。
如果 n 提供了要生成的样条曲线段数。如果 n 不提供,样条曲线段的数量根据 THEA1 和 TaTa2 .
Masionobe,L.,2003年。 Drawing an elliptical arc using polylines, quadratic or cubic Bezier curves .
-
classmethod
circle
(center=(0.0, 0.0), radius=1.0, readonly=False)[源代码]¶ 返回A
Path
表示给定半径和中心的圆。参数: - center(float,float),默认值:(0,0)
圆的中心。
- radius浮点,默认值:1
圆的半径。
- readonly布尔
创建路径实例时,创建的路径是否应设置“readonly”参数。
笔记
使用8条三次贝塞尔曲线近似圆,如中所述
Lancaster,Don。 Approximating a Circle or an Ellipse Using Four Bezier Cubic Splines .
-
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数组。每个代码都是STOP
,MOVETO
,LINETO
,CURVE3
,CURVE4
或CLOSEPOLY
. 对于对应于多个顶点的代码 (CURVE3
和CURVE4
,该代码将重复,以便self.vertices
和self.codes
总是一样的。
-
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布尔数组
-
get_extents
(transform=None, **kwargs)[源代码]¶ 把盒子从小路上拿开。
参数: - transformmatplotlib.transforms.transform,可选
转换以在计算范围(如果有)之前应用于路径。
- **kwargs
转发至
iter_bezier
.
返回: - matplotlib.transforms.Bbox
路径Bbox的范围( [[X分钟,Y分钟]] , [X最大,Y最大] )
-
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元组形式(比例、长度、随机性)。
- 转型 : None or
-
classmethod
make_compound_path_from_polys
(XY)[源代码]¶ 生成复合路径对象以绘制多个边数相等的多边形,xy是一个(numpolys x numsides x 2)numpy顶点数组。返回对象是
Path
(Source code _, png , pdf )
-
property
simplify_threshold
¶ 像素差的分数,低于该分数的顶点将被简化。
-
to_polygons
(transform=None, width=0, height=0, closed_only=True)[源代码]¶ 将此路径转换为多边形或多段线列表。每个多边形/多段线都是一个nx2顶点数组。换句话说,每个多边形都没有
MOVETO
指示或曲线。这对于在不支持复合路径或贝塞尔曲线的后端显示很有用。如果 宽度 和 高度 都是非零的,则线条将被简化,以便(0,0),(宽度,高度)之外的顶点将被剪裁。
如果 closed_only 是
True
(默认)将只返回最后一个点与第一个点相同的闭合多边形。路径中任何未闭合的多段线都将显式闭合。如果 closed_only 是False
,路径中的任何未闭合多边形都将作为未闭合多边形返回,闭合多边形将通过将最后一个点设置为与第一个点相同的方式显式闭合返回。
-
transformed
(transform)[源代码]¶ 返回路径的转换副本。
参见
matplotlib.transforms.TransformedPath
- 一个专门的路径类,它将缓存转换后的结果,并在转换更改时自动更新。
-
classmethod
unit_circle
()[源代码]¶ 返回只读
Path
单位圆的。在大多数情况下,
Path.circle()
会是你想要的。
-
classmethod
unit_circle_righthalf
()[源代码]¶ 返回A
Path
单位圆的右半部分。见
Path.circle
用于参考所使用的近似值。
-
classmethod
unit_regular_asterisk
(numVertices)[源代码]¶ 返回A
Path
对于给定numVertices和radius为1.0且以(0,0)为中心的单位普通星号。
-
classmethod
unit_regular_polygon
(numVertices)[源代码]¶ 返回A
Path
给定单位正多边形的实例 数字符号 使外切圆的半径为1.0,以(0,0)为中心。
-
matplotlib.path.
get_path_collection_extents
(master_transform, paths, transforms, offsets, offset_transform)[源代码]¶ 给定一个序列
Path
s,Transform
对象和偏移,如在PathCollection
,返回封装所有元素的边界框。参数: 笔记
方式 路径 , 变换 和 偏移量 组合的方法与集合的方法相同:每个都是独立迭代的,因此如果有3个路径、2个变换和1个偏移,则它们的组合如下所示:
(a,a,a),(b,b,a),(c,a,a)