【问题标题】:gnuplot: how to put two figures side by sidegnuplot:如何并排放置两个数字
【发布时间】:2012-05-27 14:20:52
【问题描述】:

我正在尝试使用带有 multiplot 的 gnuplot 并排放置两个数字。 我希望生成的图像是矩形的,所以我使用 set size 2, 1。我还设置了 set multiplot layout 1, 2 选项。但是,生成的图像仅使用可用空间的左侧部分。任何帮助将不胜感激。 谢谢 艾哈迈德

这是生成的图像 http://tinypic.com/r/33mlz04/6

下面是我正在使用的 gnuplot 命令。

设置终端后记 eps 颜色增强 设置输出'figure.eps'; 设置大小 2,1; 设置多图布局 1, 2 ; 设置标题“图1”; 绘制“data1.txt” 设置标题“图1”; 绘制“data2.txt” 未设置多图

虽然我不是很确定,但经过反复试验我已经解决了它

设置终端后记 eps 颜色增强 设置输出'eps/image.eps'; 设置大小 1,0.5; 设置多图布局 1, 2 ; 设置标题“图1”; 设置大小 0.5,0.5; 绘制“数据/data1.txt” 设置标题“图1”; 设置大小 0.5,0.5; 绘制“数据/data2.txt” 未设置多图

【问题讨论】:

  • 欢迎来到 StackOverflow!作为风格问题,您不需要在 gnuplot 中使用尾随分号(就像在 C 中那样)......虽然它们不会造成伤害,但它们往往会使脚本的可读性降低(恕我直言)。此外,如果您发现 @andyras 的解决方案有用,请随时投票,甚至将其标记为已接受的解决方案。

标签: gnuplot


【解决方案1】:

尝试类似:

set terminal postscript eps color enhanced size 10,5
set output 'figure.eps';

set multiplot layout 1, 2 ;
set title "Figure 1";
plot  "data1.txt" 
set title "Figure 1";
plot  "data2.txt" 
unset multiplot

当您在终端规格线上设置尺寸时,它决定了绘图画布的实际尺寸(在这种情况下以英寸为单位)。当您在单独的行上使用 set size 时,它将以画布大小的相对单位设置绘图的大小。这在旧版本的 gnuplot 中有所不同。要获得更好的解释,请在 gnuplot 中尝试 help set size

【讨论】:

  • 谢谢andyras,虽然你的建议不起作用,但它让我尝试了更多的可能性,我设法解决了这个问题。我把解决方案放在原帖下面。
  • 很高兴您解决了问题。我发布的解决方案对我有用——您使用的是哪个版本的 gnuplot?
  • 很好地指出了“画布”大小和各个图大小之间的差异。 (+1)
【解决方案2】:

为了更好地控制绘图的大小/位置,您可以结合使用set originset size 来更改每个绘图的位置和大小。最后,可以使用set lmargin at <place>(和set rmargin ...)实现最大程度的控制,tmarginbmargin 以此类推,其中“lrtb”分别代表左、右、上和下。

因此,要获得一个填满所有可用空间(从左到右)的绘图,您可以:

set multiplot
set lmargin at 0
set rmargin at .5
plot sin(x)
set lmargin at .5
set rmargin at 1
plot cos(x)
unset multiplot

但是,这(通常)是矫枉过正。通常 gnuplot 会尝试为您的标签等设置足够大的边距,但设置边距会显式禁用它。我建议您使用 andyras 的解决方案。

【讨论】:

    【解决方案3】:

    如果您在使用此方法处理超过 2 个数字时遇到问题,请在“设置大小 0.5,0.5”之后添加“设置原点 0,0”。 例如,对于三个数字:

    set terminal postscript eps color enhanced 
    
    set output 'eps/image.eps'; 
    set size 1.5,0.5;
    
    set multiplot layout 1, 3 ;
    set title "Figure 1";
    set size 0.5,0.5;
    set origin 0,0
    plot  "data/data1.txt" 
    set title "Figure 2";
    set size 0.5,0.5;
    set origin 0,0
    plot  "data/data3.txt"
    set title "Figure 3";
    set size 0.5,0.5;
    set origin 0,0
    plot  "data/data3.txt" 
    unset multiplot
    

    【讨论】:

      猜你喜欢
      • 2016-12-12
      • 1970-01-01
      • 2011-08-13
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      相关资源
      最近更新 更多