PyVista Python入门

2025年4月12日 | 阅读 10 分钟

PyVista 是一个免费的 Python 库,用于 3D 绘图和网格分析。它通过可视化和分析使复杂的、高级的 3D 数据对所有人都可以访问。因此,PyVista 赋能来自各行各业的研究人员、工程师以及各界专业人士,让他们能够更清晰、更高效地以图形方式探索和更好地解读数据。

这是一个高效且通用的库,应用于计算流体动力学、结构分析和医学成像等领域。以计算流体动力学为例,PyVista 可视化复杂模拟中的流动模式和湍流;而在医学成像中,它用于显示解剖结构的 3D 重建,从而在诊断和研究工作中提供很大帮助。

PyVista 能够与其他 Python 包直接无缝连接,因此在快速开发复杂的可视化工作流方面非常高效。它有助于科学研究、工程设计以及从航空航天到医疗保健等各个行业企业的决策过程。它在其中扮演着至关重要的角色。

PyVista 的一些主要特点

它充满了强大的功能,PyVista 之所以成为 3D 数据可视化和分析中不可或缺的工具,也是因为它拥有如此强大的功能。下面列出的一些主要关键功能是其总结:

  1. 直观且用户友好的 API
    PyVista 进一步提供了一个交互式的高级 API,非常易于使用且灵活。可视化工具包中许多复杂的细节被抽象出来,支持用户进行非常复杂的 3D 可视化,代码量更少,花费的时间也更少,即使是复杂的构建可视化的新手用户也可以更快地生成可视化。
  2. 广泛的网格支持
    由于支持各种网格类型,PyVista 可用于各种应用。一些支持包括结构化网格、非结构化网格、点云和表面网格。对如此广泛的网格类型和多样性的支持,确保了 PyVista 在几何形状、模拟数据和扫描的 3D 模型等领域的使用顺畅无阻。
  3. 交互式和动态绘图
    它可以创建交互式 3D 图。通过 Jupyter Notebook 集成,用户可以在浏览器界面内创建高度交互的可视化。这些图允许用户实时探索数据并进行可能的实时操作,从而提高对数据的理解并基于数据做出更好的决策。
  4. 强大的数据处理和分析工具
    PyVista 不仅仅是一个可视化库,它还配备了一套强大的数据处理工具。您可以直接在库内进行数据处理、过滤,甚至直接分析。这使其成为处理 3D 数据的全包式解决方案,从预处理到更复杂的分析。

安装 PyVista

PyVista 库已安装在系统中,用于 3D 可视化和数据分析。安装该库非常简单,可以使用 Python 内置的包管理器 pip 来完成。

以下是安装 PyVista 的分步说明:

1. 准备环境: 要安装该库,请确保首先安装 Python。如果您的系统未安装 Python,请从官方 Python 网站下载并安装。您也可以使用虚拟环境来保持依赖项的组织性,并避免与其他项目发生冲突。

2. 安装 PyVista: 打开终端或命令提示符,然后键入以下命令:

3. 安装完成后,您可以通过打开 Python 环境并运行以下代码来检查安装情况:

代码

如果命令运行没有错误并打印出 PyVista 的已安装版本,则表示该库已成功安装。

4. 附加依赖项: 虽然 PyVista 本身已准备就绪,但某些功能可能需要额外的包,例如 numpy、matplotlib 或 pyvistaqt,以实现高级绘图功能。您可以使用 pip 命令进行安装:

安装 PyVista 后,您就可以轻松创建 3D 可视化并执行高级网格分析了。

PyVista 的用途

1. 使用 PyVista 进行 3D 可视化

PyVista 是一个帮助用户创建 3D 图和可视化的工具,它将复杂的数据集转化为清晰的图形表示。这对于处理复杂 3D 数据的研究人员、工程师和专业人士来说非常有用,因为它能够轻松地探索和理解多维信息。

使用 PyVista,用户可以绘制详细的 3D 图,具有缩放、平移和旋转等功能,从而提供更多数据洞察。PyVista 抽象了许多 3D 可视化的复杂性,即使是那些在高级可视化技术方面经验很少的用户也能轻松使用。

2. 网格分析和操作

PyVista 使用户能够高效地加载、处理和分析各种网格数据。它提供了可以执行高级操作的功能,例如网格抽取(decimation),该功能可以在保留重要特征的同时减少网格的多边形数量。该应用程序对于优化用于可视化或模拟目的的 3D 模型特别有用。还可以通过 PyVista 执行平滑操作,从而允许用户通过消除粗糙度或噪声来细化网格表面,以提高可视化质量和模型准确性。网格特征提取是该库的另一项功能,从中可以轻松提取或理解网格的特定特征或特定区域。因此,PyVista 是处理和操作复杂 3D 数据集的通用工具,广泛应用于 计算几何、工程和 计算机图形学 领域。

3. 有限元分析 (FEA)

工程师使用 PyVista 有效地可视化 有限元分析 (FEA) 模拟的结果,从而深入了解复杂系统在各种情况下的行为。PyVista 能够在复杂的 3D 模型上直接显示关键模拟输出,例如应力分布、应变、场和变形模式。这些可视化有助于工程师解释组件对施加力的结构响应,识别潜在的薄弱点,并优化设计以提高性能。凭借其直观的界面和强大的绘图功能,PyVista 可以轻松地将原始 FEA 数据处理并转换为有意义的、交互式的视觉表示,使其成为结构分析、产品设计和工程研究的宝贵工具。

4. 计算流体动力学 (CFD)

PyVista 被广泛用于可视化流体流动模拟,它提供了强大的工具来表示和分析复杂的 计算流体动力学 (CFD) 数据,使用户能够以图形方式显示速度场、压力分布和其他关键流动参数,从而易于理解和解释模拟结果。工程师和研究人员可以利用 PyVista 软件包生成 3D 动态、实时和交互式的动画,以表示最复杂性质的精细流动模式、湍流和边界相互作用。此功能在设计优化领域至关重要,尤其是在空气动力学、水动力学甚至热力学系统方面。因此,将这些原始模拟转化为清晰而详细的视觉呈现,使得在 CFD 研究中诊断问题和验证模型更加容易。

5. 教育目的

它也是一个非常有价值的教育工具,因为学生可以通过 PyVista 提供的动态、交互式 3D 可视化来学习和理解复杂维度的概念。教师有机会更容易地与学生讨论或解释复杂的理论,例如物理学和工程学、流体力学、结构力学等。

在 Python 中实现 PyVista

在本节中,我们将演示如何使用 PyVista 库创建和绘制一个简单的 3D 球体。一切都始于 Sphere() 函数,该函数创建一个 3D 球体对象,并接受您可能需要进一步自定义的参数,包括半径和分辨率。创建球体后,它与 Plotter() 函数一起用于初始化视觉环境和设置绘图界面。然后,add_mesh() 函数用于将球体对象“粘合”到绘图环境中。此类函数允许许多自定义选项,包括能够指定球体的颜色和其他样式选项。之后,调用 show() 函数来渲染可视化,并在交互式窗口中显示 3D 球体。此工作流程展示了 PyVista 在最少的精力下提供制作、自定义和拥有 3D 几何形状的能力,从而不仅在计算几何或教育特定领域,而且在科学研究中也具有可视化和分析能力。

示例 1

输出

An Introduction to PyVista in Python

说明

上面的代码展示了如何使用 PyVista 库创建和可视化一个简单的 3D 球体。首先,导入 pyvista 模块。然后使用 pv.Sphere() 生成一个球体对象,该对象创建一个球体的 3D 网格表示。pv.Plotter() 初始化一个用于显示 3D 可视化的绘图环境。使用 add_mesh() 方法将球体网格添加到 Plotter 中,并将颜色设置为“lightblue”以提高美观性。

让我们使用 Python 中的 PyVista 创建一个 3D 立方体。

示例 2

输出

An Introduction to PyVista in Python

说明

用于创建和可视化 3D 立方体的代码。首先,导入 PyVista 模块,该模块允许访问其强大的 3D 可视化功能。使用 pv.Cube() 函数创建了一个 3D 立方体对象,该函数生成了一个简单的立方体模型。此立方体存储在变量名 cube_model 中。接下来,使用 pv.Plotter() 初始化一个绘图器对象,该函数为渲染 3D 对象提供了一个画布。通过 add_mesh() 方法将立方体添加到 Plotter 中,并添加了自定义的立方体颜色。最后,visualization.show() 命令会在一个交互式窗口中显示 3D 可视化,用户可以在其中旋转、缩放和探索立方体。

示例 3

输出

An Introduction to PyVista in Python

说明

此代码用于使用 PyVista 库创建和可视化 3D 玩具火箭。火箭由几个几何组件构成。火箭的主体建模为一个圆柱体(pv.Cylinder),其中心位于原点,垂直方向,半径为 0.5,高度为 2。使用锥体(pv.Cone)生成火箭的顶部,其中心位于 (0,0,1.5),垂直方向,高度为 1,半径为 0.5。四片尾翼被可视化为小盒子(pv.Box),具有特定的边界,以模拟它们在火箭底部周围的位置。这些组件被整合到一个 pv.MultiBlock 对象中,该对象允许有组织地分组火箭的所有部件。使用 visualization 初始化一个 pv.Plotter() 对象。火箭的每个组件都使用 add_mesh() 方法添加到 Plotter 中,该方法指定了不同的颜色:火箭主体为银色,锥形顶为红色,所有尾翼为蓝色。使用平滑着色来提高形状的美学质量。总体而言,plotPlotterw() 函数在交互式窗口中渲染 3D 模型,用户可以通过旋转、缩放和平移来探索模型。

使用 PyVista 的优点

  1. 用户友好的 API: PyVista 允许以最少的编码量获得复杂的视觉效果和见解,从而使该库更易于使用。这不仅使初学者容易使用该库,而且提高了熟练用户的生产力。
  2. 全面的网格支持: 该库支持多种网格类型,包括结构化网格、非结构化网格、点云和表面网格。借助 PyVista 提供的多功能性,您可以处理复杂几何形状和数据表示,这使得其在有限元分析、计算流体动力学、3D 建模和科学可视化等领域具有更广泛的应用。无论您是处理基于规则的网格数据还是不规则、分散的点数据集,该框架都提供了有效处理、分析和可视化它们的工具。
  3. 交互式绘图: 它与 Jupyter Notebook 集成,可以直接在 notebook 环境中进行交互式数据探索和可视化。这将使用户能够在同一个界面中集成代码、视觉输出和解释性文本;因此,它在原型设计、教学和数据分析工作流程中是一个出色的工具。通过这种方式,Jupyter 的交互式用户可以动态修改参数,实时可视化其结果,从而通过简单但非常直观的体验从其数据中获得洞察。
  4. 强大的数据处理: 提供了一套详细的数据处理、过滤和分析工具,能够高效地处理和探索 3D 数据集。这些工具通过提供直观的方法来编辑、精炼和提取复杂 3D 数据中的有意义的见解,从而实现了工作流程的平滑,使得从许多不同应用程序中进行空间信息的分析和解释。
  5. 应用广泛: PyVista 被用于许多应用,例如计算流体动力学、医学成像、有限元分析 和教育。在计算流体动力学方面,它可视化流动模式和模拟;而在医学成像方面,它有助于解释和分析复杂的解剖结构。有限元分析可用于分析应力分布和材料行为,从而深入了解工程设计。它还提供了一个强大的教育工具,并通过生动的 3D 可视化来增进对科学和数学概念的理解。