我在 multiplot 环境中使用 gnuplot。我只想有一个钥匙箱(这不是问题),我想在图下放入“水平模式”。
Nice Plot1 | Nice Plot2
Nice Plot3 | Nice Plot4
the keybox
Run Code Online (Sandbox Code Playgroud)
似乎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'
Run Code Online (Sandbox Code Playgroud)
这是一个丑陋的问题。我从来没有真正使用过 epslatex 终端——这可能会导致额外的复杂性,因为文档指出
“当使用 Tex 终端时......其中格式信息嵌入在字符串中,gnuplot 只能估计字符串定位的正确宽度”
您说得对,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.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10360 次 |
最近记录: |