[PyVista] 介绍

一,介绍

PyVista是一个用于3D可视化和网格处理的Python库,它提供了一种简单而强大的方式来创建、渲染和分析复杂的三维数据集和网格。PyVista建立在VTK(Visualization Toolkit)和NumPy之上,为用户提供了许多方便的工具和功能,使其在处理和可视化大型数据集时变得更加容易和高效。

二,PyVista的主要功能包括:

  1. 三维数据可视化:PyVista支持各种各样的可视化效果,包括绘制网格、体绘制、等值面绘制、矢量场绘制等。用户可以轻松地创建各种类型的可视化效果,以便更好地理解和分析数据。

  2. 网格处理:PyVista提供了许多功能强大的网格处理工具,例如网格滤波、剖分、重采样等。这些工具可以帮助用户对网格进行各种操作,使其更加适合特定的需求。

  3. 与其他Python库的集成:PyVista与许多其他Python库兼容,包括pandas、scipy、scikit-learn等,使用户可以轻松地将PyVista与这些库结合使用,从而更好地处理和分析数据。

  4. 交互式可视化:PyVista支持交互式可视化,用户可以在图形界面中旋转、缩放、平移数据集,以便更好地查看数据。此外,PyVista还支持在Jupyter Notebook中进行交互式可视化,使用户可以直接在Notebook中查看和操作数据。

总的来说,PyVista是一个功能强大而灵活的Python库,为用户提供了丰富的工具和功能,使其能够更好地处理和可视化各种类型的三维数据。通过PyVista,用户可以快速、简单地创建高质量的三维可视化效果,从而更好地理解和分析数据。PyVista的使用范围非常广泛,包括地质学、生物医学、工程学等领域,为用户提供了一个强大的工具,帮助他们更好地处理

三,预告示例代码

import pyvista as pv  # 导入PyVista库

# 读取STL文件并创建网格对象
mesh = pv.read('bun_zipper_res4.STL')

# 默认绘制网格
mesh.plot()

# 设置相机位置
cpos = [(0.036, 0.367, 0.884), (0.024, 0.033, -0.022), (-0.303, 0.895, -0.325)]

# 创建Plotter对象,并以点形式绘制网格
pl = pv.Plotter()
pl.add_mesh(mesh, style='points', color='magenta', render_points_as_spheres=True, point_size=10)
pl.show(cpos=cpos)

# 创建Plotter对象,并显示网格边缘
pl = pv.Plotter()
pl.add_mesh(mesh, show_edges=True)
pl.show(cpos=cpos)

# 创建Plotter对象,显示网格边缘,并定制点的颜色和大小
pl = pv.Plotter()
pl.add_mesh(
    mesh,
    show_edges=True,
    vertex_color='magenta',
    render_points_as_spheres=True,
    point_size=10,
    show_vertices=True,
)
pl.show(cpos=cpos)

# 提取网格表面的点
surf_points = mesh.extract_surface().points

# 创建Plotter对象,显示网格边缘和表面点,并按第二列的值对点进行着色
pl = pv.Plotter()
pl.add_mesh(mesh, show_edges=True)
pl.add_points(
    surf_points,
    color='magenta',
    render_points_as_spheres=True,
    point_size=10,
    scalars=surf_points[:, 1],
    lighting=False,
    show_scalar_bar=False,
)
pl.show(cpos=cpos)

 运行结果;

 

 

 

 

四,为什么选择 PyVista? 

        VTK 是一个出色的可视化工具包,并且具有 Python 绑定 应该能够将 C++ 的速度与快速原型设计相结合 的 Python 的。然而,尽管有这些 VTK 代码,用 Python 编程 通常看起来与 C++ 对应项相同。本模块旨在 简化网格创建和绘图,而不会丢失功能。

PyVista 数据模型和 API 允许您快速加载网格和 处理大部分设置绘图的“繁重工作”,连接 类和管道,以及清理绘图窗口。它这样做 通过向 VTK 的类公开一个简化但实用的接口。

在 中,PyVista 会自动确定正确的 文件读取器,并返回一个 DataSet 对象。 此 dataset 对象包含类可用的所有方法(包括方法),允许您立即生成 网格。垃圾回收会自动处理,并且 渲染器在用户关闭绘图窗口后被清理。

同时,可以生成各种 PyVista 对象 直接从 NumPy 数组中获取。例如,下面我们生成一个向量 箭头字段使用 :

import pyvista
import numpy as np

# 创建网格
# Make a grid
x, y, z = np.meshgrid(np.linspace(-5, 5, 20),
                      np.linspace(-5, 5, 20),
                      np.linspace(-5, 5, 5),
                      indexing='ij')

points = np.empty((x.size, 3))
points[:, 0] = x.ravel('F')
points[:, 1] = y.ravel('F')
points[:, 2] = z.ravel('F')

# 计算矢量场的方向
direction = np.sin(points)**3

# 使用绘图类进行绘图
pl = pyvista.Plotter()
pl.add_arrows(points, direction, 0.5)
pl.show()

运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yasen.M

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值