根据文档,具有布局的多图可以具有其自己的自定义原点的图,该图将覆盖其布局位置:http://gnuplot.sourceforge.net/docs_4.2/node203.html
我正在尝试使用以下示例代码来完成此操作;但是,我无法使第三图在第二行的中间对齐。
set multiplot layout 2,2 rowsfirst margins 0.1,0.93,0.2,0.93 spacing 0.1,0.1
plot sin(x)
plot cos(x)
plot tan(x)
如何使tan(x)
出现在第二行的中间,而不是出现在第二行的第一个单元格中?
我知道我可以简单地关闭布局并手动设置每个图的大小/原点来获得所需的内容。但是,我正在寻找一种解决方案,使我能够处理布局规范,因为我也有一些空白,除非绝对有必要获得想要的效果,否则我不希望使用其他代码进行定义。
答案 0 :(得分:1)
必须承认,这可能有点乏味,另一方面,直接玩边距可以给您一定的灵活性。下面的脚本基本上只首先计算各个图的屏幕坐标中的宽度和高度,然后通过set margin
命令将它们分别放置:
BORDER_L = 0.10
BORDER_R = 0.07
BORDER_B = 0.20
BORDER_T = 0.07
SPACING_X = 0.10
SPACING_Y = 0.10
NUM_ROWS = 2
NUM_COLS = 2
PLT_W = (1 - BORDER_L - BORDER_R - (NUM_COLS-1)*SPACING_X)/NUM_COLS
PLT_H = (1 - BORDER_B - BORDER_T - (NUM_ROWS-1)*SPACING_Y)/NUM_ROWS
#set multiplot layout 2,2 rowsfirst margins BORDER_L,1-BORDER_R,BORDER_B,1-BORDER_T spacing SPACING_X,SPACING_Y
set multiplot
set tmargin at screen 1 - BORDER_T
set bmargin at screen 1 - BORDER_T - PLT_H
set lmargin at screen BORDER_L
set rmargin at screen BORDER_L + PLT_W
plot sin(x)
set tmargin at screen 1 - BORDER_T
set bmargin at screen 1 - BORDER_T - PLT_H
set lmargin at screen 1 - BORDER_R - PLT_W
set rmargin at screen 1 - BORDER_R
plot cos(x)
set tmargin at screen 1 - BORDER_T - PLT_H - SPACING_Y
set bmargin at screen BORDER_B
set lmargin at screen (1 - PLT_W)/2
set rmargin at screen 1 - (1 - PLT_W)/2
plot tan(x)