5

我在 multiplot 环境中使用 gnuplot。我只想有一个钥匙盒(这不是问题),我想在地块下放入“水平模式”。

Nice Plot1 | Nice Plot2

Nice Plot3 | Nice Plot4

      the keybox

似乎 keybox 的总大小不能超过其相应绘图的宽度(所以这里是屏幕大小的一半)。这会导致我不想要的键盘中的行返回。

有没有办法绕过它?

谢谢。

编辑:添加脚本。(钥匙箱在 3 行)

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'
4

1 回答 1

4

这是一个丑陋的问题。我从来没有真正使用过 epslatex 终端——这可能会导致额外的复杂性,因为文档指出

“当使用 Tex 终端时……格式化信息嵌入在字符串中,gnuplot 只能估计字符串定位的正确宽度”

你说得对,gnuplot 似乎不想制作一个比绘图更宽的键——太糟糕了,你不能像使用rectangle. 不过,这很容易解决。诀窍是使您的图(没有键)正常,然后制作一个最终的“空”图,该图与您需要的一样大以适合标签:

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.
于 2012-11-01T17:43:03.670 回答