在gnuplot中垂直堆叠的多色谱

时间:2016-03-08 09:09:45

标签: gnuplot stacked

我试图在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

原始图片如下。我想删除图表之间的空白区域。 Original image

1 个答案:

答案 0 :(得分:0)

Gnuplot空间不足。您需要修复set sizeset origin命令,以便不在绘图区域之外绘图。现在,您的SX=0.25表示每个子图的水平尺寸占可用空间的25%,因此只有4个子图可以适合此设置。然后需要将第五个子图放置在绘图区域之外。

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

通常,在进行这种绘图风格时,最好定义边距而不是尺寸和原点。