Matplotlib - 路径



路径是指引导从一个地方到另一个地方移动的路线(轨迹)。它可以是物理的,例如小径或道路,也可以是抽象的,例如实现目标的一系列步骤。路径提供方向并帮助我们浏览空间。它们标志着到达目的地的途径。

Paths

Matplotlib中的路径

在 Matplotlib 中,路径是用于在绘图上绘制形状和线条的基本对象。路径由一系列连接的点组成,称为顶点或节点,以及关于如何连接这些点以形成形状(如线、曲线或多边形)的指令。

可以使用“Path”类在 Matplotlib 中创建路径。这些路径可以用于创建各种类型的绘图,例如线、曲线、多边形,甚至自定义形状。路径提供了一种定义绘图中对象外观的方法,允许您控制它们的大小、位置和样式。

让我们从绘制一条基本的直线路径开始。

直线路径

在 Matplotlib 中,直线路径指的是由两点用直线连接的基本几何元素。此路径是通过指定线的起点(通常称为“原点”)和终点的坐标来创建的。然后,Matplotlib 在这两点之间绘制一条直线,形成路径。

示例

在下面的示例中,我们使用 Matplotlib 中的 Path 类创建一个直线路径。我们定义了两个顶点,分别表示线的起点和终点。此外,我们指定路径代码以指示路径移动到第一个顶点,然后创建一条线到第二个顶点。通过使用这些顶点和代码构造路径,我们实现了直线的表示 -

import matplotlib.pyplot as plt
from matplotlib.path import Path
import matplotlib.patches as patches

# Defining the vertices for the straight line path
verts = [
   # Starting point
   (0, 0),
   # Ending point
   (1, 1)   
]

# Defining the codes for the straight line path
codes = [Path.MOVETO, Path.LINETO]

# Creating the straight line path
path = Path(verts, codes)

# Plotting the path
fig, ax = plt.subplots()
patch = patches.PathPatch(path, facecolor='none', lw=2)
ax.add_patch(patch)
ax.set_title('Straight Line Path')
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.grid(True)
plt.show()

输出

以下是上述代码的输出 -

Straight Line Path

圆形路径

在 Matplotlib 中,圆形路径表示绘图上绘制的圆形。它是通过指定圆的中心点及其半径来创建的。然后,Matplotlib 在圆的圆周周围生成一系列点,并将它们连接起来形成一个封闭的路径。

示例

在这里,我们使用 Matplotlib 中的 Path 类创建一个圆形路径。我们通过定义在单位圆周围均匀分布的角度来生成圆周上的一系列顶点。使用三角函数,我们计算这些顶点的坐标。随后,我们定义路径代码以用线连接这些顶点 -

import matplotlib.pyplot as plt
from matplotlib.path import Path
import matplotlib.patches as patches
import numpy as np

# Defining the angles for the circle path
theta = np.linspace(0, 2*np.pi, 100)

# Defining the vertices for the circle path
verts = np.column_stack([np.cos(theta), np.sin(theta)])

# Definng the codes for the circle path
codes = [Path.MOVETO] + [Path.LINETO] * (len(verts) - 1)

# Creating the circle path
path = Path(verts, codes)

# Plotting the path
fig, ax = plt.subplots()
patch = patches.PathPatch(path, facecolor='none', lw=2)
ax.add_patch(patch)
ax.set_title('Circle Path')
ax.set_xlim(-1.1, 1.1)
ax.set_ylim(-1.1, 1.1)
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.grid(True)
plt.show()

输出

执行上述代码后,我们将得到以下输出 -

Circle Path

贝塞尔曲线路径

在 Matplotlib 中,贝塞尔曲线路径是用控制点创建的平滑曲线。

要构造贝塞尔曲线,您需要指定一系列控制点来引导曲线的路径。这些控制点决定曲线的走向和形状,使您可以创建平滑流畅的形状。然后,Matplotlib 通过连接这些控制点来生成曲线。

示例

现在,我们使用 Path 类在 Matplotlib 中创建一个贝塞尔曲线路径。我们指定定义贝塞尔曲线形状的控制点。此外,我们定义路径代码以指示连续控制点之间曲线段的类型。通过使用这些控制点和代码构造路径,我们创建了一个平滑的贝塞尔曲线 -

import matplotlib.pyplot as plt
from matplotlib.path import Path
import matplotlib.patches as patches

# Defining the control points for the Bezier curve
verts = [
   (0.1, 0.1),
   (0.2, 0.8),
   (0.8, 0.8),
   (0.9, 0.1),
]

# Defining the codes for the Bezier curve path
codes = [Path.MOVETO, Path.CURVE4, Path.CURVE4, Path.CURVE4]

# Creating the Bezier curve path
path = Path(verts, codes)

# Plotting the path
fig, ax = plt.subplots()
patch = patches.PathPatch(path, facecolor='none', lw=2)
ax.add_patch(patch)
ax.set_title('Bezier Curve Path')
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.grid(True)
plt.show()

输出

执行上述代码后,我们将得到以下输出 -

Bezier Curve Path

多边形路径

在 Matplotlib 中,多边形路径表示具有多条直边的封闭形状,类似于几何多边形。此形状是通过按特定顺序指定其顶点或角点的坐标来创建的。然后,Matplotlib 顺序连接这些点以形成多边形的边,并通过连接最后一个点到第一个点来闭合路径。

多边形路径是用于表示各种形状的多功能元素,例如三角形、矩形、五边形或任何其他多边形。它们可以用颜色填充以表示区域,或用作轮廓以突出显示绘图中的特定区域。

示例

在此示例中,我们使用 Matplotlib 中的 Path 类创建一个多边形路径。我们定义了多边形的顶点,表示多边形形状的角点。此外,我们指定路径代码以连接这些顶点并闭合多边形。通过使用顶点和代码构造路径,我们形成了一个封闭的多边形形状 -

import matplotlib.pyplot as plt
from matplotlib.path import Path
import matplotlib.patches as patches

# Defining the vertices for the polygon
verts = [
   (0.1, 0.1),
   (0.5, 0.9),
   (0.9, 0.1),
   # Closing the polygon
   (0.1, 0.1)  
]

# Defining the codes for the polygon path
codes = [Path.MOVETO, Path.LINETO, Path.LINETO, Path.CLOSEPOLY]

# Creating the polygon path
path = Path(verts, codes)

# Plotting the path
fig, ax = plt.subplots()
patch = patches.PathPatch(path, facecolor='none', lw=2)
ax.add_patch(patch)
ax.set_title('Polygon Path')
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.grid(True)
plt.show()

输出

执行上述代码后,我们将得到以下输出 -

Polygon Path
广告