如何解决Gnuplot:多图和插图
我有两个情节,比如说
set multiplot # First plot with inset
plot exp(-x)
set size 0.6,0.5
set origin 0.4,0.5
plot cos(x)
unset multiplot
set multiplot # Second plot with inset
plot exp(-2x)
set size 0.6,0.5
plot sin(x)
unset multiplot
这将创建两个单独的图,但我真的希望两个图彼此相邻的单个输出。 作为伪代码,我希望像
set multiplot layout 1,2
set multiplot
plots+insets of first plot here
unset multiplot
set multiplot
plots+insets of second plot here
unset multiplot
unset multiplot
当然,我不认为您可以(轻松)像这样嵌套多图,所以也许需要采用不同的方法? 重新表述这个问题:如何使用 multiplot 创建彼此相邻的不同绘图,以便其中一些绘图还包含插图(这本身需要使用 multiplot)?
编辑: 作为对 Ethan 评论的回应:最终输出只是一个 pdf 图像。我可以先创建单独的图,然后将它们放在一起,但是我希望仍然能够相对于彼此定位两个图像。特别是,应该可以“融合”第一个图像的右边界和第二个图像的左边界。在单个多图中,这可以例如通过修改 tmargins 和 bmargins 来完成。这仍然可以使用单独的图像来完成吗?
解决方法
我是这么理解你的问题的。我想您只需要自己设置原点和尺寸即可。您可以使用变量来计算必要的值。
代码:
### multiplot with "insets"
reset session
set key top left
set multiplot
# settings for main plots
set ytics auto
# first plot
s1x = 0.5
s1y = 1.0
set size s1x,s1y
o1x = 0.0
o1y = 0.0
set origin o1x,o1y
plot exp(-x)
# second plot
s2x = 0.5
s2y = 1.0
set size s2x,s2y
o2x = 0.5
o2y = 0.0
set origin o2x,o2y
set ytics auto
plot exp(-2*x)
# settings for insets
set ytics 0.5
# first inset
set size s1x*0.6,s1y*0.5
set origin o1x+s1x*0.4,o1y+s1y*0.5
plot cos(x)
# second inset
set size s2x*0.6,s2y*0.5
set origin o2x+s2x*0.4,o2y+s2y*0.5
plot sin(x)
unset multiplot
### end of code
结果:
,您只需要一个多区环境。您可以通过手动将每个图放在页面上所需的位置来模拟嵌套的多图,例如像这样:
set nokey
set multiplot
set size 0.5,1
set origin 0,0
plot exp(-x)
set size 0.3,0.5
set origin 0.2,0.5
plot cos(x)
set size 0.5,1
set origin 0.5,0
plot exp(-2*x)
set size 0.3,0.5
set origin 0.7,0.5
plot sin(x)
unset multiplot
结果:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。