迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Matplotlib 三角剖分

作者:迹忆客 最近更新:2023/05/01 浏览次数:

Python 的 Matplotlib 工具包可用于构建静态、动画和交互式可视化。 它使困难的事情成为可能,例如生成适合发布的图表以及制作具有缩放、平移和更新功能的交互式图表。


Matplotlib 三角剖分

为了绘制三角剖分,Matplotlib 提供了库和函数。 一个表面或平面多边形以这种方式被分成几个三角形。

通常,每个三角形顶点由两个相邻三角形共享。

Python 绘制连续曲面的能力是通过三角剖分思想实现的。 三角形可以具有用户定义的坐标,或者具有三角形中的点集合,以维持由 Delaunay 三角剖分覆盖的曲面图。

这篇文章将向我们介绍 Matplotlib 三角剖分。 函数 matplotlib.pyplot.triplot() 至少接受两个参数——x 和 y 数据点——是绘制三角剖分所必需的。

n 个点和 ntri 个三角形组成一个非结构化的三角形网格。

三角形可以使用 Delaunay 三角剖分自动创建或由用户指定它们(生成覆盖对象的三角形网格)。

让我们创建一个随机三角形:

首先,您必须导入所需的库,例如 Matplotlib、NumPy 等。

Import library

当我们生成随机三角形时,让我们首先为三角形生成随机数据。

出于演示目的,以下代码用于创建随机点云:

Generate Random Data

在为 Matplotlib 三角剖分图生成数据之前,我们确保三角剖分是真实的。 它不能包含由共线点、相同点或重叠三角形组成的三角形。

Generate Triangle

在 matplotlib.tri 函数中,使用函数 triangulation() 生成三角形,该函数至少需要两个参数,x 和 y 数据点。

我们可以使用 matplotlib.pyplot.triplot() 方法在图形上绘制三角剖分。

Display Triangles

由于三角点云是随机生成的,因此每次执行脚本时您都会观察到一个新的三角点。

让我们在 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 绘制球面图

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

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/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 图形看起来非常锐利和清晰

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便