Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
覆盖Gnuplot多点布局_Gnuplot - Fatal编程技术网

覆盖Gnuplot多点布局

覆盖Gnuplot多点布局,gnuplot,Gnuplot,根据文档,具有布局的多点打印可以具有自己的自定义原点,该原点覆盖其布局位置: 我试图用下面的示例代码来实现这一点;但是,我不能让第第三行在第二行中间对齐。 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) 如何使TANX出现在第二行的中间,而不是在第二行的第一个单元格中出现? 以下是我得到的: 以下是我想要的: 我明

根据文档,具有布局的多点打印可以具有自己的自定义原点,该原点覆盖其布局位置:

我试图用下面的示例代码来实现这一点;但是,我不能让第第三行在第二行中间对齐。

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)

如何使TANX出现在第二行的中间,而不是在第二行的第一个单元格中出现? 以下是我得到的:

以下是我想要的:


我明白,我可以简单地关闭布局,手动设置每个绘图的大小/原点,以获得我想要的;然而,我正在寻找一种解决方案,它允许我使用布局规范,因为我使用的是一个边距,我不想用不同的代码定义它,除非它是绝对必要的,以获得我想要的效果。

另一方面,人们必须承认它可能有点乏味,直接使用边距可以为您提供一定的灵活性。下面的脚本基本上只是首先计算各个绘图的屏幕坐标中的宽度和高度,然后通过“设置边距”命令分别定位它们:

然后产生:

我还没有完全理解。你怎么了。。。将原点设置为0.25,0绘图tanx?布局应该是什么样子?位置、边距、大小、绘图数量……啊,我看到这与我提供的MWE有效。我已经用multiplot命令的完整代码更新了MWE,它返回了我观察到的问题。嗯,显然边距0.1,0.93,0.2,0.93覆盖了设置原点0.25,0。那我就不知道了。。。可能回到手动设置大小和原点?如果你还没有检查过,也许这会有帮助,谢谢你的链接;我很感激。有没有办法向gnuplot团队报告bug?要么1文档需要更改,这样它就不会说origin将覆盖布局,要么2 origin需要覆盖布局。这是一些很好的代码。谢谢你给我看这个;我能够根据自己的需要来调整它。就我当前的项目而言,这确实使绘图有点难看,为此,为了简单起见,我确实希望gnuplotorigin在将来覆盖边距设置。
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)