【发布时间】:2013-04-09 14:29:40
【问题描述】:
我想用gnuplot按以下方式放置几个图:
+------------------------+
|plot1 |
| |
+------------------------+
+----------++------------+
|plot2 ||plot3 |
| || |
+----------++------------+
+----------++------------+
|plot4 ||plot5 |
| || |
+----------++------------+
可以通过set multiplot layout n,m 实现简单的nxm 布局(请参阅这些demos 以获取官方网站上的说明)。
matplotlib 提供了更多高级功能,您可以在文档中看到:Customizing Location of Subplot Using GridSpec。
在 gnuplot 中,我使用了 set origin 和 set size 来实现这一点。但是,它相当繁琐,当您发现以后要更改布局时,需要重新计算大小和位置。
备注1: 通常,将边距设置为固定大小以实现正确的绘图大小也很有用。通过改变 xlabels 等进行的自动计算将使实现正确布局变得更加困难。
备注2: gnuplot 提供了另一种使用set [lrbt]margin <> at screen 设置绘图边界的可能性,而不是origin/size。用户必须确保标题和标签有足够的空间(请参阅demo)。仍然不是一个完美的解决方案,但有时更方便。
是否存在我不知道的可能性,或者是否存在用于创建布局的工具?
【问题讨论】:
-
我会将绘图分别绘制到不同的文件中,然后使用不同的工具(例如 imagemagick)来创建布局。
-
我不确定这是否真的是一个显着的改进,因为我必须通过
set term ... size x,y为我想要的布局调整至少所有大小的输出文件。改变布局也意味着重新调整 gnuplot 文件并再次运行 imagemagick, tex-file, .... -
是的,为重复的部分创建一个 Makefile :-)
-
为了完整起见,给定布局的紧凑解决方案是使用
set multiplot layout 3,2 upwards并仅设置最后一个绘图命令 (plot1)set size 1,1./3.但我的问题当然是针对任意布局的。
标签: gnuplot