Matplotlib 三角剖分
Python 的 Matplotlib 工具包可用于构建静态、动画和交互式可视化。 它使困难的事情成为可能,例如生成适合发布的图表以及制作具有缩放、平移和更新功能的交互式图表。
Matplotlib 三角剖分
为了绘制三角剖分,Matplotlib 提供了库和函数。 一个表面或平面多边形以这种方式被分成几个三角形。
通常,每个三角形顶点由两个相邻三角形共享。
Python 绘制连续曲面的能力是通过三角剖分思想实现的。 三角形可以具有用户定义的坐标,或者具有三角形中的点集合,以维持由 Delaunay 三角剖分覆盖的曲面图。
这篇文章将向我们介绍 Matplotlib 三角剖分。 函数 matplotlib.pyplot.triplot() 至少接受两个参数——x 和 y 数据点——是绘制三角剖分所必需的。
n 个点和 ntri 个三角形组成一个非结构化的三角形网格。
三角形可以使用 Delaunay 三角剖分自动创建或由用户指定它们(生成覆盖对象的三角形网格)。
让我们创建一个随机三角形:
首先,您必须导入所需的库,例如 Matplotlib、NumPy 等。
当我们生成随机三角形时,让我们首先为三角形生成随机数据。
出于演示目的,以下代码用于创建随机点云:
在为 Matplotlib 三角剖分图生成数据之前,我们确保三角剖分是真实的。 它不能包含由共线点、相同点或重叠三角形组成的三角形。
在 matplotlib.tri 函数中,使用函数 triangulation() 生成三角形,该函数至少需要两个参数,x 和 y 数据点。
我们可以使用 matplotlib.pyplot.triplot() 方法在图形上绘制三角剖分。
由于三角点云是随机生成的,因此每次执行脚本时您都会观察到一个新的三角点。
让我们在 3D 空间中执行 Matplotlib 三角剖分。 在本节中,我们将使用 Matplotlib 三角剖分绘制球体。
我们必须参数化球体以使用三角测量绘制球体。 我们必须在 x 轴上取两个向量 cos(a) 和 sin(b) 的外积,在 y 轴上取 sin(a) 和 sin(b),在 z 轴上取 cos() ( b).
a 列给出了从 0 到 2π 的等间距数字列表,b 列给出了 0 到 π 的等间距数字列表。
以下代码使用 Matplotlib 三角剖分绘制球体:
import numpy as np
from scipy.spatial import Delaunay
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
ax = plt.figure().gca(projection='3d')
def triangulateSphere(ax, k=30, cmap=cm.magma):
# domain parametrization
U = np.linspace(0, 2 * np.pi, k)
V = np.linspace(0, np.pi, k)
[X, Y] = np.meshgrid(U, V)
# sphere parametrization
S1 = np.cos(X) * np.sin(Y)
S2 = np.sin(X) * np.sin(Y)
S3 = np.cos(Y)
# triangulate the points in [0,2pi] x [0,pi]
tri = Delaunay(np.array([X.flatten(), Y.flatten()]).T)
# plot the sphere
ax.plot_trisurf(
S1.flatten(), S2.flatten(), S3.flatten(),
triangles=tri.simplices,
cmap=cmap
)
triangulateSphere(ax)
plt.show()
首先,我们导入了所需的模块并设置了图形大小。 之后,ax = plt.figure().gca(projection='3d')
将图形从 2D 更改为 3D。
numpy.linspace() 方法为列表 U 和 V 生成 30 个均匀间隔的数字。函数 numpy.meshgrid()
接受编码网格坐标的一维数组作为输入,并从坐标向量返回坐标矩阵。
向量(cos(a) 和 sin(b))、(sin(a) 和 sin(b))和(1 和 cos(b) 的数组)相应地产生列表 S1、S2 和 S3。
使用 matplotlib.pyplot.show()
函数显示三角球图。 随着参数 k 的增加,更多的点被定义,导致更小的三角形和更平滑的球体。
运行代码将输出:
相关文章
Matplotlib 中的内联魔术函数
发布时间:2023/05/02 浏览次数:59 分类:Python
-
在这篇文章中,我们学习了什么是魔法函数,然后我们在讨论内联函数之后看到了 Matplotlib 中可用的不同魔法函数。
Matplotlib 标记填充
发布时间:2023/05/02 浏览次数:86 分类:Python
-
在本说明中,我们了解了如何自定义标记样式和创建填充标记,我们还了解了如何在 Matplotlib 中创建具有不同线条样式的绘图。
Matplotlib 等值线图
发布时间:2023/05/02 浏览次数:75 分类:Python
-
在此篇文章中,我们将了解什么是等高线图以及如何借助 Matplotlib 中的 contour() 方法获取等高线图。
在 Matplotlib 中创建趋势线
发布时间:2023/05/02 浏览次数:92 分类:Python
-
在这篇文章中,我们看了关于趋势线的简短演示,并了解了如何在 matplotlib 中的图形上创建线性趋势线。
在 Matplotlib 中设置条形图的宽度参数
发布时间:2023/05/02 浏览次数:173 分类:Python
-
在这个关于 Matplotlib 的演示中,我们讨论了条形图,并查看了 Matplotlib 中 bar 函数的宽度参数。
Matplotlib 中错误 No Handles With Labels Found to Put in Legend
发布时间:2023/05/02 浏览次数:208 分类:Python
-
本文演示了我们如何在尝试使用 Matplotlib 绘制某些内容时解决警告(No Handles With Labels Found to Put in Legend)。
Matplotlib 动画
发布时间:2023/05/01 浏览次数:84 分类:Python
-
本文介绍了使用 Matplotlib 包在 Python 中创建动画图表的步骤。 要了解所涉及的步骤,您应该对 Matplotlib 库有最低限度的了解。
Matplotlib stackplot 栈图
发布时间:2023/05/01 浏览次数:191 分类:Python
-
Matplotlib 是一个 Python 库,提供了广泛的绘图功能。 matplotlib 最有用的功能之一是 stackplot 函数。这篇文章重点解释了使用 matplotlib 包在 Python 中创建 %matplotlib notebook 图形所涉及的不同步骤。
Matplotlib 视网膜
发布时间:2023/05/01 浏览次数:52 分类:Python
-
在这篇文章中,我们将解释所有关于 Matplotlib 视网膜的信息。 Matplotlib 的主要功能之一是它支持视网膜显示器,这是一种具有高像素密度的屏幕。 这使得 Matplotlib 图形看起来非常锐利和清晰