如何在gnuplot中使用`set term push`和`set term pop`

时间:2019-06-07 17:47:24

标签: gnuplot

我在Arch Linux上使用gnuplot 5.2.7。我想临时更改终端的配置,绘制某些内容,然后将其还原(初始化文件中没有终端配置)。我认为poppush可以达到这种效果,但我没有成功。

这是我在gnuplot会话中所做的。首先,将终端设置为wxt并推动它,然后绘制正弦波:

gnuplot> set term wxt 1 ; set term push

Terminal type is now 'wxt'
Options are '1 enhanced'
   pushed terminal wxt 1 enhanced
gnuplot> plot sin(x)

到目前为止,这可行。现在,我想暂时将背景更改为青色,然后恢复为默认背景:

gnuplot> set term wxt 1 background "cyan"

Terminal type is now 'wxt'
Options are '1 background '#00ffff' enhanced'
gnuplot> plot sin(x)
gnuplot> set term pop
   restored terminal is wxt 1 background '#00ffff' enhanced
gnuplot> 

如您所见,pop进入终端无法恢复背景。下一个情节带有青色背景。

Gnuplot's manual (pdf)在第257页中指出:

  

命令set term push会记住当前终端,包括其   set term pop恢复时进行设置。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

从gnuplot手册中:

  

命令集术语push会记住当前终端,包括其   设置术语弹出时恢复设置。这相当于保存   条件和负载条件,但不访问文件系统。因此   它们可用于实现平台的独立还原   例如,打印后的终端。 gnuplot启动后,   默认终端或启动文件中的终端会自动推送。   因此,可移植脚本可以依靠设置的术语pop来恢复   给定平台上的默认终端,除非已使用另一个终端   明确推送。

实际上,我不清楚terminal pushterminal pop有什么好处?好了,还原默认终端。我可以(当前)想到的唯一优点是,在长gnuplot脚本中,当您来回切换到不同的终端时,不必一次又一次地键入默认终端的所有参数。而且,如果您更改了某些终端设置,则必须更改脚本中所有出现的内容。

以下内容可能对您有用:在代码的开头,将具有背景或其他设置的终端定义为字符串变量,然后使用@将其称为宏。因此,因此,调用@TerminalDefaultset terminal pop并没有区别,除了如果以前使用相同终端但设置不同,@TerminalDefault也将恢复。

代码:

### workaround for terminal push & pop with same terminal but different settings
reset session

TerminalDefault = 'set term wxt 0 background "white"'
TerminalCyan = 'set term wxt 0 background "cyan"'
TerminalYellow = 'set term wxt 0 background "yellow"'
TerminalPNG = 'set term png background "green"'

@TerminalDefault
plot x
pause -1 TerminalDefault

@TerminalCyan
plot x**2
pause -1 TerminalCyan

@TerminalPNG
set output "Test.png"
plot x**3
set output
pause -1 TerminalPNG

@TerminalDefault
plot x**4
pause -1 TerminalDefault

### end of code