matplotlib.path#

用于处理整个 Matplotlib 中使用的折线的模块。

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

虽然Path无法绘制实例本身,但可以使用一些Artist子类(例如PathPatchPathCollection)来方便地进行Path 可视化。

matplotlib.path。路径顶点代码= _interpolation_steps = 1关闭=只读=[来源] #

基地:object

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

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

  • vertices : 一个 Nx2 浮点数组的顶点

  • 代码:一个 N 长度的 uint8 路径代码数组,或无

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

代码类型有:

  • STOP1 个顶点(忽略)

    整个路径结束的标记(当前不需要并且被忽略)

  • MOVETO1 个顶点

    拿起笔并移动到给定的顶点。

  • LINETO1 个顶点

    从当前位置到给定顶点画一条线。

  • CURVE31个控制点,1个端点

    用给定的控制点从当前位置到给定的终点绘制一条二次贝塞尔曲线。

  • CURVE42个控制点,1个端点

    用给定的控制点从当前位置到给定的端点绘制一条三次贝塞尔曲线。

  • CLOSEPOLY1 个顶点(忽略)

    在当前折线的起点绘制一条线段。

如果代码为无,则将其解释为 aMOVETO后跟一系列LINETO.

Path 对象的用户不应直接访问顶点和代码数组。相反,他们应该使用iter_segmentsorcleaned来获取顶点/代码对。这尤其有助于始终如一地处理代码为无的情况。

Path 对象的某些行为可以由 rcParams 控制。查看其键以“path.”开头的 rcParams。

笔记

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

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

参数
顶点(N, 2) 类似数组

路径顶点,作为数组、掩码数组或对序列。掩码值(如果有)将转换为 NaN,然后​​由 Agg PathIterator 和其他路径数据消费者正确处理,例如iter_segments().

代码类数组或无,可选

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

_interpolation_steps int,可选

用作对某些投影(例如 Polar)的提示,该路径应在绘制之前立即进行线性插值。此属性主要是一个实现细节,不打算供公众使用。

封闭布尔,可选

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

只读bool,可选

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

关闭多头= 79 #
曲线3 = 3 #
曲线4 = 4 #
LINETO = 2 #
移动= 1 #
NUM_VERTICES_FOR_CODE = {0: 1, 1: 1, 2: 1, 3: 2, 4: 3, 79: 1} #

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

停止= 0 #
classmethod arc ( theta1 , theta2 , n = None , is_wedge = False ) [source] #

从角度theta1theta2(以度为单位)返回Path单位圆弧的a。

theta2被展开以产生 360 度内的最短弧。也就是说,如果theta2 > theta1 + 360,那么弧将从theta1theta2 - 360,而不是一个完整的圆加上一些额外的重叠。

如果提供了n,则它是要制作的样条线段数。如果未提供n ,则根据 theta1和theta2之间的增量确定样条线段的数量

classmethod circle ( center = (0.0, 0.0) , radius = 1.0 , readonly = False ) [source] #

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

参数
中心(浮点数,浮点数),默认值:(0, 0)

圆的中心。

半径浮动,默认值:1

圆的半径。

只读布尔

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

笔记

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

已清理变换= remove_nans = False剪辑= *简化=曲线=笔画宽度= 1.0快照=草图=[来源] #

返回一个新的路径,其中包含根据参数清理的顶点和代码。

也可以看看

Path.iter_segments

有关关键字参数的详细信息。

clip_to_bbox ( bbox , inside = True ) [source] #

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

路径必须由一个或多个封闭多边形组成。对于未闭合的路径,此算法将无法正确运行。

如果insideTrue,则剪辑到盒子的内部,否则剪辑到盒子的外部。

代码类型#

的别名uint8

属性 代码#

Path1D numpy 数组中的代码列表。每个代码都是STOPMOVETOLINETOCURVE3CURVE4 之一CLOSEPOLY。对于对应多个顶点 (CURVE3CURVE4) 的代码,将重复该代码,以使vertices和的长度codes始终相同。

contains_path ( path , transform = None ) [source] #

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

如果transform不是None,则在检查是否包含之前将转换路径。

contains_point ( point , transform = None , radius = 0.0 ) [source] #

返回路径包围的区域是否包含给定点。

路径总是被视为封闭的;即,如果最后一个代码不是 CLOSEPOLY,则假定将最后一个顶点连接到第一个顶点的隐式段。

参数
(浮点数,浮点数)

要检查的点 (x, y)。

变换matplotlib.transforms.Transform,可选

如果不是None,则将self与transform进行比较;即为了正确检查,transform应该将路径转换为​​point的坐标系。

半径浮动,默认值:0

在point坐标中的路径上添加额外的边距。路径沿切向延伸radius/2;即,如果您绘制线宽为radius的路径,则线上的所有点仍将被视为包含在该区域中。相反,负值缩小区域:假想线上的点将被视为区域之外。

返回
布尔

笔记

当前算法有一些局限性:

  • 对于恰好在边界处的点(即在移动了radius/2的路径处),结果是不确定的。

  • 如果没有封闭区域,则结果不确定,即所有顶点都在一条直线上。

  • 如果边界线由于半径偏移而开始相互交叉,则不能保证结果是正确的。

contains_points ( points , transform = None , radius = 0.0 ) [source] #

返回路径包围的区域是否包含给定的点。

路径总是被视为封闭的;即,如果最后一个代码不是 CLOSEPOLY,则假定将最后一个顶点连接到第一个顶点的隐式段。

参数
(N, 2) 数组

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

变换matplotlib.transforms.Transform,可选

如果不是None,则将self与transform进行比较;即为了正确检查,transform应该将路径转换为​​points的坐标系。

半径浮动,默认值:0

在点坐标中的路径上添加额外的边距。路径沿切向延伸radius/2;即,如果您绘制线宽为radius的路径,则线上的所有点仍将被视为包含在该区域中。相反,负值缩小区域:假想线上的点将被视为区域之外。

返回
长度-N 布尔数组

笔记

当前算法有一些局限性:

  • 对于恰好在边界处的点(即在移动了radius/2的路径处),结果是不确定的。

  • 如果没有封闭区域,则结果不确定,即所有顶点都在一条直线上。

  • 如果边界线由于半径偏移而开始相互交叉,则不能保证结果是正确的。

复制( ) [来源] #

返回 的浅拷贝Path,它将与源共享顶点和代码Path

deepcopy ( memo = None ) [来源] #

返回Path. Path即使源是只读的,也不会是只读的Path

get_extents ( transform = None , ** kwargs ) [source] #

获取路径的Bbox。

参数
变换matplotlib.transforms.Transform,可选

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

**kwargs

转发到iter_bezier

返回
matplotlib.transforms.Bbox

路径 Bbox([[xmin, ymin], [xmax, ymax]]) 的范围

静态 孵化hatchpattern密度= 6[来源] #

给定一个阴影说明符,hatchpattern,生成一个可以在重复的阴影图案中使用的路径。密度是每单位平方的线数。

插值(步骤) [来源] #

返回一个重新采样到长度为 N x 步的新路径。

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

intersects_bbox ( bbox , filled = True ) [source] #

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

如果filled是True,那么如果路径完全包围了Bbox(即,路径被视为已填充),这也返回True。

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

intersects_path ( other , filled = True ) [source] #

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

如果填充为真,则如果一条路径完全包围另一条路径(即,路径被视为已填充),则这也返回真。

iter_bezier ( ** kwargs ) [来源] #

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

参数
**kwargs

转发到iter_segments

产量
B matplotlib.bezier.BezierSegment

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

代码Path.code_type

描述返回哪种曲线的代码。Path.MOVETO、Path.LINETO、Path.CURVE3、Path.CURVE4 分别对应具有 1、2、3 和 4 个控制点的贝塞尔曲线。Path.CLOSEPOLY 是一个 Path.LINETO,其控制点根据当前笔画的起点/终点正确选择。

iter_segmentstransform = None remove_nans = True clip = None snap = False stroke_width = 1.0 simplify = None curve = True sketch = None[来源] #

迭代路径中的所有曲线段。

每次迭代都会返回一个 pair ,其中 是 1-3 个坐标对的序列,并且是一个代码。(vertices, code)verticescodePath

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

参数
转换无或Transform

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

remove_nans bool,可选

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

剪辑无或(浮动,浮动,浮动,浮动),可选

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

snap无或布尔值,可选

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

stroke_width浮动,可选

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

简化None 或 bool,可选

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

曲线布尔,可选

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

草图无或序列,可选

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

类方法 make_compound_path ( * args ) [ source] #

Path对象列表中创建复合路径。盲目删除所有Path.STOP控制点。

类方法 make_compound_path_from_polys ( XY ) [ source] #

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

源代码png

../_images/histogram_path_00_00.png
属性 只读#

True如果Path是只读的。

属性 应该简化#

True如果顶点数组应该被简化。

属性 简化阈值#

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

to_polygons ( transform = None , width = 0 , height = 0 , closed_only = True ) [来源] #

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

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

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

转换变换[来源] #

返回路径的转换副本。

也可以看看

matplotlib.transforms.TransformedPath

一个专门的路径类,它将缓存转换结果并在转换更改时自动更新。

类方法 unit_circle ( ) [ source] #

返回单位圆的只读Path

在大多数情况下,Path.circle()这将是您想要的。

类方法 unit_circle_righthalf ( ) [来源] #

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

有关Path.circle所使用的近似值的参考,请参阅。

类方法 unit_rectangle ( ) [来源] #

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

类方法 unit_regular_asterisk ( numVertices ) [来源] #

返回具有Path给定 numVertices 和半径为 1.0 的单位常规星号的 a,以 (0, 0) 为中心。

类方法 unit_regular_polygon ( numVertices ) [source] #

返回具有给定numVerticesPath的单位正多边形的实例,使得外接圆的半径为 1.0,以 (0, 0) 为中心。

类方法 unit_regular_star ( numVertices , innerCircle = 0.5 ) [source] #

Path为具有给定 numVertices 和半径为 1.0,以 (0, 0) 为中心的单位常规星返回 a 。

属性 顶点#

PathNx2 numpy 数组中的顶点列表。

类方法( theta1 , theta2 , n = None ) [来源] #

从角度theta1theta2(以度为单位)返回Path单位圆楔形的a。

theta2被展开以产生 360 度内的最短楔形。也就是说,如果theta2 > theta1 + 360,则楔形将从theta1theta2 - 360,而不是一个完整的圆加上一些额外的重叠。

如果提供了n,则它是要制作的样条线段数。如果未提供n ,则根据 theta1和theta2之间的增量确定样条线段的数量

有关Path.arc所使用的近似值的参考,请参阅。

matplotlib.path。get_path_collection_extents ( master_transform , paths , transforms , offsets , offset_transform ) [source] #

给定一系列Paths、Transforms 对象和偏移量,如在 a 中找到的PathCollection,返回封装所有这些的边界框。

参数
master_transformTransform

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

路径列表Path
变换列表Affine2D
偏移量(N, 2) 类似数组
偏移变换Affine2D

在偏移路径之前应用到偏移量的变换。

笔记

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

(A, A, A), (B, B, A), (C, A, A)