gnuplot 边距如何在多图模式下工作?

How do gnuplot margins work in multiplot mode?

我对 gnuplot 边距有点困惑。首先,我不知道这些东西指向什么单位。它们是指向 canvas 坐标还是 canvas 坐标的一小部分。它们在 gnuplot 模式和多图模式下的行为是否相同?

我的问题出现在以多图模式绘制一些数据时。我正在绘制到屏幕(wtx 终端)。这么说吧,我把事情搞砸了——我从 canvas 或非常小的不可读的情节中得到了情节。

没有边距,第一个图与 canvas 的顶部齐平,所以我自然想将它向下推一点。

谁能解释一下 gnuplot 边距的工作原理以及它们在多图模式下的行为是否相同。

是的,边距在 "normal" 绘图模式和多绘图模式下的表现非常相似。基本上,边距可以有三种不同的"modes":

  1. 自动,这是默认设置。
  2. 将每个边距设置为特定大小,如 set lmargin 2。单位是字符宽度(或tmarginbmargin的字符高度)。
  3. 设置边框相对于整个 canvas 的特定 位置 ,例如 set lmargin at screen 0.1,它将左绘图边框设置为 10%总 canvas 宽度。

multiplot 模式的唯一区别是,1. 和 2. 中的边距参考由 layout 选项确定的站点给出:

set multiplot layout 2,2

这会将整个 canvas 细分为四个大小相等的矩形。现在,使用

set lmargin 1
set rmargin 1
set tmargin 1
set bmargin 1

相对于较小的矩形,在每个子图的每一侧留出一个字符宽度或高度的边距:

set multiplot layout 2,2
set lmargin 0
set rmargin 0
set tmargin 0
set bmargin 0
set format ''
plot x
plot x**2
plot x**3
plot x**4
unset multiplot

set multiplot layout 2,2
set lmargin 1
set rmargin 1
set tmargin 1
set bmargin 1
set format ''
plot x
plot x**2
plot x**3
plot x**4
unset multiplot

如果你想设置每个边框的绝对位置,这会变得更麻烦,因为你必须为每个绘图设置四个边距(layout 选项在这种情况下没有任何效果):

set multiplot
set lmargin at screen 0.1
set rmargin at screen 0.47
set tmargin at screen 0.97
set bmargin at screen 0.6
plot x
...

Gnuplot 版本 5 提供了一种非常灵活的方法来生成相等的矩形,请参阅我对 Removing blank gap in gnuplot multiplot

的回答