pm3d(彩色)与3D线面图匹配错位问题求助
解决方案
核心思路
通过固定坐标系范围+预先生成低分辨率插值数据的方式,避免两次dgrid3d插值导致的坐标系错位,同时兼顾pm3d的高分辨率细节和线图的清晰度。
具体操作步骤
绘制高分辨率pm3d并锁定坐标系
先完成pm3d绘图,同时记录当前的x/y/z轴范围,确保后续线图完全匹配该范围:set pm3d map # 若需3D视角可改为`set pm3d`并调整视角参数 set dgrid3d 960,960 plot 'your_data.dat' with pm3d # 保存当前坐标系的边界值 xmin = GPVAL_X_MIN xmax = GPVAL_X_MAX ymin = GPVAL_Y_MIN ymax = GPVAL_Y_MAX zmin = GPVAL_Z_MIN zmax = GPVAL_Z_MAX预生成低分辨率插值数据文件
用set table将原始数据按低分辨率参数插值后的结果保存为临时文件,后续线图直接调用该文件,避免重复插值的误差:set dgrid3d 120,120 qnorm 9 set table 'low_res_temp.dat' plot 'your_data.dat' with lines # 仅生成插值数据,不显示绘图 unset table unset dgrid3d # 关闭自动插值,防止干扰后续操作叠加低分辨率线图
基于锁定的坐标系,重新绘制pm3d并叠加预生成的低分辨率线图:set pm3d map # 强制使用之前锁定的坐标系范围 set xrange [xmin:xmax] set yrange [ymin:ymax] set zrange [zmin:zmax] # 叠加绘图,可调整线宽、颜色增强辨识度 plot 'your_data.dat' with pm3d, 'low_res_temp.dat' with lines lw 1.5 lc 'white'
替代方案(多图层同步)
如果不想生成临时文件,可使用multiplot same强制共享同一坐标系,但需注意两次插值的参数要独立设置:
set multiplot same set pm3d map set dgrid3d 960,960 plot 'your_data.dat' with pm3d set dgrid3d 120,120 qnorm 9 plot 'your_data.dat' with lines lw 1.5 lc 'white' unset multiplot
注:
set isosamples仅对gnuplot内置函数有效,外部非网格数据的插值密度只能通过dgrid3d控制,上述方法完美解决了高分辨率pm3d与低分辨率线图的匹配问题。
内容的提问来源于stack exchange,提问作者user24353751
相关产品推荐
相关产品推荐

