gnuplot 中的垂直堆叠多图

Vertically stacked multiplot in gnuplot

我正在尝试在 gnuplot 中以垂直堆叠模式绘制 5 个图形。有许多水平(x 轴共享)图表。我试图调整他们的解决方案。但不知何故不起作用。这是代码。

set key bottom center
 NX=5; NY=1
 DX=0.01; DY=0.01; SX=0.25; SY=0.85
 set bmargin DX; set tmargin DX; set lmargin DY; set rmargin DY
 set size SX*NX+DX*4,SY*NY+DY*4
 set multiplot layout 1,5 #title 'Distance from inlet boundary' font #'areal,18' 

 #1set title 'sa4(210)'
 set size SX,SY
 set label 1 '50m' at 1.5, 1.5 #font 'areal,15'
 set x2tics (0, 0.01, 0.02)
 set xtics (0, 2, 4)
 set ytics (-15, -10, -5, 0)
 set x2range [-0.001:0.02]
 set xrange [0:4]
 set yrange [-15:0]
 set ylabel 'metre(s) below sea level'
 set key bottom
 set xtics nomirror #smooth bezier w p csplines
 set origin DX,DY;
 plot 'so10.dat' u 2:1 w p pt 7 lc rgb 'red' title 'Salinity' axes x2y1,\
      'so10.dat' u 3:1 w p pt 8 lc rgb 'blue' title 'Sediment' axes x1y1

 #2set title 'sa4(210)'
 set size SX,SY
 set label 1 '250m' at 1.5, 1.5 #font 'areal,15'
 set x2tics (0, 0.01, 0.02)
 set xtics (0, 2, 4)
 set x2tics
 set x2range [-0.001:0.02]
 set xrange [0:4]
 unset ylabel
 unset ytics
 set key bottom
 set xtics nomirror #smooth bezier w p csplines
 set origin DX+SX,DY;
 plot 'so50.dat' u 2:1 w p pt 7 lc rgb 'red' title 'Salinity' axes x2y1,\
      'so50.dat' u 3:1 w p pt 8 lc rgb 'blue' title 'Sediment' axes x1y1

 #3set title 'sa4(210)'
 set size SX,SY
 set label 1 '750m' at 4.0, 1.5 #font ',15'
 set x2tics (0, 0.01, 0.02)
 set xtics (0, 5, 10)
 set x2tics
 set x2range [-0.001:0.02]
 set xrange [0:10]
 unset ylabel
 set key bottom
 set xtics nomirror #smooth bezier w p csplines
 set origin DX+SX*2,DY;
 plot 'so150.dat' u 2:1 w p pt 7 lc rgb 'red' title 'Salinity' axes x2y1,\
      'so150.dat' u 3:1 w p pt 8 lc rgb 'blue' title 'Sediment' axes x1y1

 #4set title 'sa4(210)'
 set size SX,SY
 set label 1 '850m' at 4.0, 1.5 #font ',15'
 set x2tics (0, 0.01, 0.02)
 set xtics (0, 6, 12)
 set x2tics
 set x2range [-0.001:0.02]
 set xrange [0:12]
 unset ylabel
 set key bottom
 set xtics nomirror #smooth bezier w p csplines
 set origin DX+SX*3,DY;
 plot 'so170.dat' u 2:1 w p pt 7 lc rgb 'red' title 'Salinity' axes x2y1,\
      'so170.dat' u 3:1 w p pt 8 lc rgb 'blue' title 'Sediment' axes x1y1

 #5set title 'sa4(210)'
 set size SX,SY
 set label 1 '950m' at 4.0, 1.5 #font ',15'
 set x2tics (0, 0.01, 0.02)
 set xtics (0, 5, 10)
 set x2tics
 set x2range [-0.001:0.02]
 set xrange [0:10]
 unset ylabel
 set key bottom
 set xtics nomirror #smooth bezier w p csplines
 set origin DX+SX*4,DY;
 plot 'so190.dat' u 2:1 w p pt 7 lc rgb 'red' title 'Salinity' axes x2y1,\
      'so190.dat' u 3:1 w p pt 8 lc rgb 'blue' title 'Sediment' axes x1y1

 unset multiplot

下面4张图合二为一。代码必须生成 5 个图形。 Generated image

原图如下。我想删除图表之间的空白 space。 Original image

Gnuplot 在 space 个中占 运行 个。您需要修复 set sizeset origin 命令,这样您就不会在绘图区域之外绘图。现在,您的 SX=0.25 意味着每个子图的水平维度占可用 space 的 25%,因此只有 4 个子图适合此设置。然后要求第五个子图放置在绘图区域之外。

另请注意,通过设置原点和大小,您将覆盖定义的 multiplot layout

通常,在做这种绘图风格时,定义边距而不是大小和原点可能是更好的主意。