I'm using gnuplot in the multiplot environment. I want to have only one key box (which is not a problem) that i want to put in "horizontal mode" under the plots.
Nice Plot1 | Nice Plot2
Nice Plot3 | Nice Plot4
the keybox
It seems that the total size of the keybox can't exceed the width of its corresponding plot (so here it's half the screen size). This is causing line returns in the keybox which i don't want.
Is there anyway to get around it?
Thanks.
Edit: Script added. (the keybox is on 3 lines)
set terminal epslatex color
set output 'Plot.tex'
set multiplot
set xrange [0:0.8]
set key box
set key reverse horizontal maxcols 10 samplen 0.5 spacing 1
#set key font ",9"
set key at screen 0.9,0.15
set size 0.5,0.5
set origin 0,0
set lmargin 4
set bmargin 3
set rmargin 0
set tmargin 0
set xtics nomirror
set ytics nomirror
plot x with lines lt 1 lw 4 lc rgb "red" title 'Median',\
x with lines lw 4 lc rgb "blue" title '$ F,F^{-1}$',\
x with lines lw 4 lc rgb "magenta" title '$ F,\Gamma^\mathcal{P}$',\
x with lines lw 4 lc rgb "orange" title '$\Lambda_\text{MI}$',\
x with lines lt 1 lw 4 lc rgb "green" title '$k$-NN'
#
# Plot n°2
#
set size 0.5,0.5
set origin 0,0.5
set xrange [0:0.8]
set key off
set title ''
set lmargin 4
set bmargin 3
set rmargin 0
set tmargin 0
set xtics nomirror
set ytics nomirror
plot x with lines lt 1 lw 4 lc rgb "red" title 'Median',\
x with lines lw 4 lc rgb "blue" title '$ F,F^{-1}$',\
x with lines lw 4 lc rgb "magenta" title '$ F,\Gamma^\mathcal{P}$',\
x with lines lw 4 lc rgb "orange" title '$\Lambda_\text{MI}$',\
x with lines lt 1 lw 4 lc rgb "green" title 'KNN',\
x with lines lt 1 lw 4 lc rgb "black" title 'Ground Truth'
set size 0.5,0.5
set origin 0.5,0
set xrange [0:0.8]
set key off
set title ''
set lmargin 4
set bmargin 3
set rmargin 0
set tmargin 0
set xtics nomirror
set ytics nomirror
plot x with lines lt 1 lw 4 lc rgb "red" title 'Median',\
x with lines lw 4 lc rgb "blue" title '$ F,F^{-1}$',\
x with lines lw 4 lc rgb "magenta" title '$ F,\Gamma^\mathcal{P}$',\
x with lines lw 4 lc rgb "orange" title '$\Lambda_\text{MI}$',\
x with lines lt 1 lw 4 lc rgb "green" title 'KNN',\
x with lines lt 1 lw 4 lc rgb "black" title 'Ground Truth'
set size 0.5,0.5
set origin 0.5,0.5
set xrange [0:0.8]
set key off
set title ''
set lmargin 4
set bmargin 3
set rmargin 0
set tmargin 0
set xtics nomirror
set ytics nomirror
plot x with lines lt 1 lw 4 lc rgb "red" title 'Median',\
x with lines lw 4 lc rgb "blue" title '$ F,F^{-1}$',\
x with lines lw 4 lc rgb "magenta" title '$ F,\Gamma^\mathcal{P}$',\
x with lines lw 4 lc rgb "orange" title '$\Lambda_\text{MI}$',\
x with lines lt 1 lw 4 lc rgb "green" title 'KNN',\
x with lines lt 1 lw 4 lc rgb "black" title 'Ground Truth'
This is an ugly problem. I've never really used the epslatex terminal much -- That may cause additional complications as the documentation states that
"When using the Tex terminal ... where formatting information is embedded in the string, gnuplot can only estimate the correct width for string positioning"
You're right on with the fact that gnuplot doesn't seem to want to make a key that is wider than the plot -- too bad you can't specify the width explicitly like you would be able to do with a rectangle
. That's easy enough to work around though. The trick is to make your plots (without keys) as normal and then make a final "null" plot that is as big as you need it to be to fit the labels:
set term ...
set output ...
#Let the magic begin!
set multiplot
unset key
#<plot 1>
#...
#</plot 1>
#<plot 2>
#...
#</plot 2>
#<plot 3>
#...
#</plot 3>
#<plot 4>
#...
#</plot 4>
#<null>
#here we need to unset everything that was set previously
unset origin
unset border
unset tics
unset label
unset arrow
unset title
unset object
#Now set the size of this plot to something BIG
set size 2,2 #however big you need it
#example key settings
set key box
set key horizontal reverse samplen 1 width -4 maxrows 1 maxcols 12
set key at screen 0.5,screen 0.15 center top
#We need to set an explicit xrange. Anything will work really.
set xrange [-1:1]
set yrange [-1:1]
plot NaN w title 'title 1',\
NaN w title 'title 2',\
NaN w title 'title 3',\
NaN w title 'title 4' #etc.
#</null>
unset multiplot #<--- Necessary for some terminals, but not postscript I don't think.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With