Gnuplot多图布局(multiplot)中如何让刻度与对应图表绑定
解决Gnuplot多图布局中刻度与子图绑定的问题
问题根源
你的代码存在几个关键问题导致刻度和标签未绑定到对应子图:
- 手动设置全局画布的
size和origin,干扰了multiplot layout的自动子图布局逻辑 - 使用
graph坐标设置标签时,未考虑multiplot模式下坐标参考系默认指向全局画布的特性 - 部分
unset命令存在语法错误(如unset set colorbox),导致前一个子图的设置残留 - 未精准清除指定编号的标签,造成标签跨子图混乱
修正后的完整代码
set term postscript eps enhanced color 'Helvetica' 25 set output 'sig_tau3.eps' # 启用2×2多图布局,由gnuplot自动管理子图位置与尺寸 set multiplot layout 2,2 rowsfirst set style fill solid 1.0 noborder # -------------------------- 第一个子图 -------------------------- set size square set xtics ("0" 0, "175" 175, "350" 350) font "Helvetica,40" set ytics ("0" 0, "2" 2, "4" 4) font "Helvetica,40" set cbtics ("-0.0075" -0.0075, "0" 0, "0.0075" 0.0075) font "Helvetica,40" set xlabel "{/Symbol t}" font "Helvetica,40" # 使用first坐标(基于当前子图的轴范围)定位标签,确保绑定当前子图 set label 1 "{/Symbol s}" font "Helvetica,40" at first -50, 2 set label 2 "{Re{/Symbol z}_{max}}" font "Helvetica,40" at first 375, 2 set pm3d map set cbrange [-0.0075:0.0075] set xrange [0:350] set yrange [0:4] set palette defined (-0.0075 0 0 1, 0 0 1 0, 0 "yellow", 0.0075 1 0 0) set colorbox unset key splot "1.dat" u 1:2:4 title"" # -------------------------- 第二个子图 -------------------------- # 精准清除前一个子图的指定标签,避免残留 unset label 1 unset label 2 set size square set xtics ("0" 0, "175" 175, "350" 350) font "Helvetica,40" set ytics ("0" 0, "6" 6, "12" 12) font "Helvetica,40" set cbtics ("-0.0075" -0.0075, "0" 0, "0.0075" 0.0075) font "Helvetica,40" set xlabel "{/Symbol t}" font "Helvetica,40" set label 1 "{/Symbol s}" font "Helvetica,40" at first -50, 6 set label 2 "{Re{/Symbol z}_{max}}" font "Helvetica,40" at first 375, 6 set pm3d map set cbrange [-0.0075:0.0075] set xrange [0:350] set yrange [0:12] set palette defined (-0.0075 0 0 1, 0 0 1 0, 0 "yellow", 0.0075 1 0 0) set colorbox unset key splot "4.dat" u 1:2:4 title"" # -------------------------- 后续子图可按此格式补充 -------------------------- # 第三个子图... # 第四个子图... unset multiplot
关键修正点
- 移除全局画布设置:删除
set size 1,1和set origin 0.0,0.0,让multiplot layout自动控制子图的位置和尺寸,确保刻度、标签与子图绑定 - 精准管理标签:给每个标签指定唯一编号(如
label 1、label 2),切换子图时精准清除对应编号的标签,避免跨子图残留 - 坐标参考系调整:使用
first坐标定位标签(基于当前子图的轴范围计算位置),替代原有的graph坐标(默认参考全局画布),确保标签固定在当前子图区域 - 修正语法错误:将错误的
unset set colorbox改为unset colorbox,unset palette defined改为unset palette,避免设置残留导致的异常
内容的提问来源于stack exchange,提问作者Althaqel
相关产品推荐
相关产品推荐

