3

我设置了一个这样的多图:

set terminal wxt size 1500,900
set format x "%d%m%y %H:%M:%S"
set xdata time
set timefmt x "%Y%m%dT%H%M%S"
set key font ",6"
set lmargin 10
set rmargin 10
set multiplot layout 2,1
plot "output.txt" u 1:2 w lines axes x1y1, \
"output.txt" u 1:3 w lines axes x1y2
plot "output.txt" u 1:40 w lines axes x1y1, \
"output.txt" u 1:39 w lines axes x1y2
set y2tics border
unset multiplot

哪个有效,并给了我 2 个地块,一个在另一个之上。

但是按下“重新绘制”按钮(或使用缩放)会导致第二个图填满窗口 - 完全隐藏第一个图。

4

3 回答 3

3

是的,这就是replot行为方式。文档说:“请注意,在多图模式下,replot 只能再现最新的组件图,而不是完整集。”。

所以,你可以做的就是把所有的set multiplot ... unset multiplot东西放在一个外部文件中,load然后再放load一遍。或者将这些东西放在一个字符串中,eval然后多次。

于 2013-11-02T17:38:58.960 回答
1

我遇到过同样的问题。用循环解决它:

set term wxt enh

do for [IDX = 0:1] {

  if (IDX==1) {
    set terminal png enhanced
    set output 'temp.png'
  }

  set multiplot

  set size 1,1
  set origin 0,0
  plot sin(x)

  set size 0.5,0.35
  set origin 0.13,0.63
  plot cos(x)

  unset multiplot
}

set output
set term wxt enh

于 2014-11-26T16:00:48.050 回答
1

这是另一种解决方法。它没有直接回答这个问题,但它可以为其他类似问题提供思路。放置页眉和页脚“重读”,然后可以为类似的多图选择两个上下文(完成两次)

if (exists("rehearse")) rehearse=1+rehearse; set term x11
if (!exists("rehearse")) rehearse=0; set term png; set output sprintf("test_palette_%s.png", system("date +\"%F\""))

pr "rehearse=".rehearse; show term #<= comment printing
set samples 100;  set isosample 100,100
set xrange [0:1]; set yrange [0:1]
set palette defined (0 "white", 1 "red")
set autoscale cbfix; unset colorbox; unset key

set multiplot layout 2,2   
plot '++' using 1:2:1 with image
plot '++' using 1:2:2 with image
plot '++' using 1:2:(-$1) with image
plot '++' using 1:2:(-$2) with image
unset multiplot

if(rehearse <  1) reread
于 2017-07-06T09:07:46.500 回答