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

如何在PyVista中独立缩放坐标轴?解决轴压缩问题

实现PyVista 3D图的坐标轴独立缩放

要解决坐标轴统一缩放导致的视觉压缩问题,PyVista可通过启用平行投影+自定义轴缩放因子实现各轴独立适配数据范围,具体操作如下:

  1. 启用平行投影:避免透视投影下非均匀缩放带来的变形,让不同轴的缩放展示更直观。
  2. 设置轴缩放因子:根据各轴的数据范围计算缩放比例,让不同物理量的轴在视觉上合理呈现。

修改后的完整代码:

import numpy as np
import pyvista as pv

# 示例测试数据(替换为你实际的x、y、z和x2、y2、z2数组即可)
x = np.linspace(0, 20, 10)
y = np.linspace(0, 300, 10)
z = np.linspace(0, 50, 10)
x2 = np.linspace(5, 15, 10)
y2 = np.linspace(50, 250, 10)
z2 = np.linspace(10, 40, 10)

network = pv.MultiBlock()

points_1 = np.column_stack((x, y, z))
spline_1 = pv.Spline(points_1, 500).tube(radius=0.1)

points_2 = np.column_stack((x2, y2, z2))
spline_2 = pv.Spline(points_2, 500).tube(radius=0.1)

network.append(spline_1)
network.append(spline_2)

p = pv.Plotter()
labels = dict(zlabel='l1', xlabel='l2', ylabel='l3')  # 修正原代码中标签重复问题
p.show_grid(**labels)
p.add_axes(**labels)
p.add_mesh(spline_1, color="red", line_width=3)
p.add_mesh(spline_2, color="blue", line_width=3)

# 核心设置:开启平行投影 + 自定义轴缩放比例
p.enable_parallel_projection()
# 以x轴范围为基准,计算y、z轴的缩放因子,让各轴视觉长度匹配
x_range = np.max(x) - np.min(x)
y_range = np.max(y) - np.min(y)
z_range = np.max(z) - np.min(z)
p.set_scale(x=1, y=x_range/y_range, z=x_range/z_range)

p.show()

关键说明

  • enable_parallel_projection():开启平行投影模式,确保非均匀缩放后图形不会出现透视失真。
  • set_scale(x=, y=, z=):参数为各轴的缩放系数,数值越小,对应轴在视觉上被压缩得越明显。你也可以跳过计算,直接手动设置系数(比如把y轴缩放设为0.1),按需调整视觉效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:57:40