如何在PyVista中独立缩放坐标轴?解决轴压缩问题
实现PyVista 3D图的坐标轴独立缩放
要解决坐标轴统一缩放导致的视觉压缩问题,PyVista可通过启用平行投影+自定义轴缩放因子实现各轴独立适配数据范围,具体操作如下:
- 启用平行投影:避免透视投影下非均匀缩放带来的变形,让不同轴的缩放展示更直观。
- 设置轴缩放因子:根据各轴的数据范围计算缩放比例,让不同物理量的轴在视觉上合理呈现。
修改后的完整代码:
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
相关产品推荐
相关产品推荐

