python - 如何在Python中生成网格并绘制3D曲面?

标签 python matplotlib pyvista

我有 3d 表面的 6 个角点坐标,如图 1 所示。我想生成并绘制 3d 表面,如图 2 所示。我需要找到每个网格区域的中点距原点的距离。
Figure 1

Figure 2

请建议我,哪个模块更适合网格划分和绘图?

最佳答案

PyVista和 vtkplotter 非常相似,两者都构建在 VTK 之上,但具有截然不同的 API/设计选择。对于您的使用来说,任何一个都很棒!为了完整起见,这里是 PyVista 的等效项。

通常对于像这样的简单几何图形,Matplotlib、PyVista 或 vtkplotter 都可以很好地工作。如果您开始创建更复杂的网格和 3D 场景,那么 PyVista 和 vtkplotter 将会表现出色,因为它们是为 3D 构建的,而 MPL 在 2D 方面确实很棒。

如果你开始制作复杂的网格,PyVista 将特别擅长数据管理......无耻的插件;)

import pyvista as pv
import numpy as np

# Define the nodes
pts = np.array([(-5.795555, -4, 1.55291), (-4.829629, -2, 1.294095),
       (-5.795555, 1, 1.552914), (-5.536736, -4, 2.51884),
       (-4.57081, -2, 2.260021), (-5.536736,  1, 2.51884)])
# Define the quads
faces = np.array([(4,0,3,4,1), (4,1,4,5,2)])

# Instantiate a mesh
mesh = pv.PolyData(pts, faces)

# Create a plotting window and display!
p = pv.Plotter()

# Add the mesh and some labels
p.add_mesh(mesh, show_edges=True)
p.add_point_labels(mesh.points, ["%d"%i for i in range(mesh.n_points)])

# A pretty view position
p.camera_position = [(-11.352247399703748, -3.421477319390501, 9.827830270231935),
 (-5.1831825, -1.5, 1.9064675),
 (-0.48313206526616853, 0.8593146723923926, -0.16781448484204659)]

# Render it!
p.show()

enter image description here

关于python - 如何在Python中生成网格并绘制3D曲面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59391743/

相关文章:

python - 在 Ubuntu 14.04 中为 python 安装 opencv

python - 使图表更大

python - 如何通过鼠标单击在FigureCanvasQTAgg上画一个圆

python - 尝试在 Python 3.10 上导入 PyVista 时出现 VTK 导入错误

python-3.x - Pyvista 曲面图?

python - 在 PyVista 中从绘图仪坐标转换为世界坐标

python - Django国家不显示国家列表

python - 如何避免使用 Index() 方法对大型列表进行缓慢搜索

python - Python 模块的正确日志记录实现

python - 使用Numpy和OpenCV进行图像标准化和归一化