user669212
user669212

Reputation: 145

shorten the distance in between plots in multiplot

I have to plot a multiplot comprising two columns and five rows. I have plotted that but I find the distance in between the plots are big and I want to reduce them. I used the last sample coding (template) as in the website ( http://www.gnuplot.info/demo_canvas/layout.html ). I tried to adjust the top and bottom margin parameters. If I use smaller values the label for x-axis disappears and the distance between plots shortened. So I have to use big values. I just wonder is there any other way to bring the plot nearer to each other? I have given the coding for plot below for your view. I would be glad to get some insights on this issue. Thanks in advance

#!/usr/bin/gnuplot
  # SET TERMINAL
  set terminal postscript color enhanced "Arial" 10 #dashed lw 1 "Helvetica" 14     
  set output "plot-distribution-isoMalto-thermo.ps"

  # SET MACRO
  set macro
  labelFONT="font 'Arial,20'"
  scaleFONT="font 'Arial,14'"
  graph="using 1:2"
  axislabelFONT="font 'Arial,18' "
  #main_titleFONT="font 'times,14'"
  graphLabel="at 120,9000  font 'Arial,20' "
  position_orienation="at -50,18000 rotate right"

  color="linecolor rgb 'black' "
  layer1=" w l lt 1 lw 3 lc rgb 'black'"
  layer3=" w l lt 3 lw 3 lc rgb 'red' "
  layer2=" w l lt 2 lw 3 lc rgb 'green'"
  layer4=" w l lt 4 lw 3 lc rgb 'blue'"


  # SET MARGINS
  set tmargin 0.5
  set bmargin 4.0
  set lmargin 15
  set rmargin 3


  # SET RANGE
  set xrange [0:180]
  set yrange [0:12000]
  set xtics nomirror    0, 60, 180  @scaleFONT
  set ytics         0, 3000, 12000  @scaleFONT
  set format x ""

   #    MULTIPLOT START
  set multiplot layout 5, 2     #title "Multiplot layout 5, 2"
  set nokey

 #  PLOTTING STARTS
 #plot1
 #set title "Plot 1"
  set xtics nomirror
  set label 1 "(a)" @graphLabel
plot    "angle_output-thermo-malto-L1.dat" @layer1,\
    "angle_output-thermo-malto-L3.dat" @layer3
  #plot2
  #set title "Plot 2"
  set label 1 "(b)" @graphLabel
plot    "angle_output-thermo-malto-L2.dat" @layer2 ,\
    "angle_output-thermo-malto-L4.dat" @layer4


 #plot3
 #set title "Plot 3"
  set label 1 "(c)" @graphLabel
plot    "angle_output-thermo-bcmChain1-L1.dat" @layer1 ,\
    "angle_output-thermo-bcmChain1-L3.dat" @layer3
 #plot4
 #set title "Plot 4"
 set label 1 "(d)" @graphLabel
plot    "angle_output-thermo-bcmChain1-L2.dat" @layer2 ,\
    "angle_output-thermo-bcmChain1-L4.dat" @layer4




  #plot5
  #set title "Plot 5"
  set label 1 "(e)"     @graphLabel
 set label 2 "Distribution / N" @position_orienation @labelFONT
plot    "angle_output-thermo-bcmChain2-L1.dat" @layer1 ,\
    "angle_output-thermo-bcmChain2-L3.dat" @layer3
 #plot6
 #set title "Plot 6"
 set nolabel
 set label 1 "(f)" @graphLabel
plot    "angle_output-thermo-bcmChain2-L2.dat" @layer2 ,\
    "angle_output-thermo-bcmChain2-L4.dat" @layer4

 #plot7
 #set title "Plot 7"
 set label 1 "(g)" @graphLabel
plot    "angle_output-thermo-cello-L1.dat" @layer1 ,\
    "angle_output-thermo-cello-L3.dat" @layer3
  #plot8
  #set title "Plot 8"
  set label 1 "(h)" @graphLabel
plot    "angle_output-thermo-cello-L2.dat" @layer2 ,\
    "angle_output-thermo-cello-L4.dat" @layer4




   # for plot 9 and 10


  unset yrange
  set yrange [0:16000]
  set ytics 0, 4000, 16000
  set key

  #plot9
  #set title "Plot 9"
  set label 1 "(i)" @graphLabel
   set format x
plot    "angle_output-thermo-isomalto-L1.dat" @layer1 title "layer1",\
    "angle_output-thermo-isomalto-L3.dat" @layer3 title "layer3"

   #plot10
   #set title "Plot 10"
   set label 1 "(j)" @graphLabel
    set label "Angle in {/Symbol q} / deg" at -90,-8500 @labelFONT
    set format x
plot    "angle_output-thermo-isomalto-L2.dat" @layer2 title "layer2",\
    "angle_output-thermo-isomalto-L4.dat" @layer4 title "layer4"


   #    END MULTIPLOT
   unset multiplot
   #reset
   #pause -1

Upvotes: 3

Views: 4197

Answers (1)

mgilson
mgilson

Reputation: 310297

I know this is an old question, but it might be possible to do something with set size to increase the size of each plot (optionally, a set origin for each plot might be necessary). Otherwise, your best bet is to use set lmargin,set rmargin, set bmargin and set tmargin.

You can use set ?margin at ... to set the margin relative to screen coordinates (as opposed to character coordinates in the form you have put it. This will allow you to place the plots exactly where you want to. see http://gnuplot.sourceforge.net/demo/margins.html

Upvotes: 3

Related Questions