PyVista(以前的`vtki')是一个可适应的辅助模块和可视化工具包(VTK)的高级API。它是VTK的一个精简接口,可以实现基于Python的网格分析和三维图的绘制。它于2019年5月由C.Bane Sullivan和Alexander A. Kaszynski推出(研究论文)。在深入了解PyVista的具体内容之前,让我们先来看看VTK。
VTK(可视化工具包)的介绍
VTK是一个尖端的工具包,由一个C++类库和解释接口层组成,如Java、Python和Tcl/Tk。它融合了C++的执行速度和Python的快速原型设计能力。
开源包VTK包括一个强大的处理和渲染管道,以及许多先进的可视化方法。VTK的设计是基于一个强大的管道概念。下面是这个概念的基本组成部分的总结。
VTK管线
然而,简单的应用,如构建一个网格对象,在使用VTK时需要冗长的代码,但PyVista只需几行Pythonic和直接的代码就可以完成同样的操作。
PyVista通过NumPy库封装了VTK,各种类和方法允许直接访问数组。它允许空间数据的可视化整合、快速原型设计和网格分析。
PyVista在Python中的实现
本节将介绍PyVista的实现和显示各种三维图形和对象。我们将首先使用下面的代码片断导入PyVista模块以及该模块下的例子。
import pyvista as pv
from pyvista import examples
我们将利用一个内置的例子文件,以网格的形式显示一架飞机。请看下面的代码片段。我们还将在下面的代码片段中读取飞机文件的网格数据。
plane_file = examples.planefile
plane_mesh = pv.read(plane_file)
下一步是用下面的代码将飞机以及它的网格绘制在三维图上。代码的第三行是将网格和平面结合在一起。
cpos = plane_mesh.plot()
plane_plotter = pv.Plotter()
plane_plotter.add_mesh(plane_mesh)
让我们尝试一下其他的形状和物体,看一下惊人的结果。下面的代码片段将帮助我们得到一个门房作为输出。
mesh = examples.download_doorman()
mesh.plot(cpos="xy")
让我们再看看最后的一个对象吧!下面的代码片断会产生一些令人惊奇的东西。只要试一试,你就会大吃一惊。
mesh = examples.download_bunny_coarse()
cpos = [(0.2, 0.3, 0.9), (0, 0, 0), (0, 1, 0)]
mesh.plot(cpos=cpos, show_edges=True, color=True)
总结
我希望你喜欢这个关于PyVista的教程,并在这个教程中学习到一些新东西。 谢谢您的阅读!