You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyVista技术问询:如何在垂直切片上生成等值线?

关于PyVista切片上生成等值线的问题

PyVista的slices功能是探索网格的实用工具:
PyVista slice

我的问题

能否在xz平面这类切片上生成等值线?

当前可行方案

在xy平面上生成等值线的逻辑运行正常。

预期目标

我基于复杂地形生成了三维曲面网格,其中马特洪峰是iz=0处的下边界,该网格用于马特洪峰周边的气流模拟(未展示)。PyVista的切片功能会是分析模拟结果的绝佳工具:
马特洪峰网格示例


解决方案

当然可以在任意平面的切片上生成等值线,核心是先获取切片对应的二维数据集,再对其调用等值线生成方法,具体步骤如下:

1. 准备三维网格数据

假设你已经有包含模拟标量场(如速度、压强)的三维网格,示例代码如下:

import pyvista as pv
import numpy as np

# 替换为你的实际网格数据
grid = pv.UniformGrid()
grid.dimensions = [50, 50, 50]
grid.spacing = [1, 1, 1]
grid.origin = [0, 0, 0]
# 添加模拟标量场(示例:随x、z变化的速度场)
grid["velocity"] = np.sin(grid.points[:, 0]/10) * np.cos(grid.points[:, 2]/10)

2. 创建xz平面切片

指定切片平面的法向量(xz平面法向量为y轴方向[0,1,0])和原点位置:

# 生成y=25位置的xz平面切片,可根据需求调整原点
xz_slice = grid.slice(normal=[0, 1, 0], origin=[25, 25, 25])

3. 在切片上生成等值线

直接对切片数据集调用contour方法,可指定等值线条数或具体数值:

# 基于"velocity"标量场生成10条等值线
contours = xz_slice.contour(10, scalars="velocity")

4. 可视化切片与等值线

将切片和等值线一同渲染展示:

plotter = pv.Plotter()
plotter.add_mesh(xz_slice, opacity=0.5, cmap="viridis")
plotter.add_mesh(contours, color="white", line_width=2)
plotter.show()

关键说明

  • 该方法适用于所有平面切片(xy、xz、yz或任意自定义平面),只要通过slice得到切片数据集,即可调用contour生成等值线。
  • 无论是结构化还是非结构化网格,PyVista都能自动处理切片后的数据集,无需额外转换。

内容的提问来源于stack exchange,提问作者pyano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 00:37:26