gnuplot - 如何在 gnuplot 中使用 `set term push` 和 `set term pop`
问题描述
我在 Arch Linux 上使用 gnuplot 5.2.7。我想临时更改终端的配置,绘制一些东西,然后恢复它(我的初始化文件中没有终端配置)。我认为pop
并且push
可以用于这种效果,但我没有成功。
这就是我在 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 的手册 (pdf)在第 257 页中指出:
该命令在恢复时
set term push
记住当前终端,包括其设置。set term pop
我究竟做错了什么?
解决方案
从 gnuplot 手册:
命令 set term push 记住当前终端,包括其设置,而 set term pop 恢复它。这相当于保存期限和加载期限,但不访问文件系统。因此,它们可以用于实现终端打印后的平台独立恢复,例如。gnuplot 启动后会自动推送默认终端或启动文件中的终端。因此,可移植脚本可以依赖 set term pop 恢复给定平台上的默认终端,除非已明确推送另一个终端。
实际上,我并不完全清楚terminal push
and的好处是terminal pop
什么?好吧,恢复默认终端。我(目前)能想到的唯一优势是,在较长的 gnuplot 脚本中,当您来回切换到不同的终端时,您不必一次又一次地输入默认终端的所有参数。如果您更改某些终端设置,否则您将不得不更改脚本中的所有匹配项。
也许以下内容对您有用:在代码的开头将您的终端与您的背景或其他设置定义为字符串变量,然后将它们作为宏调用@
。所以有了这个,我看不出调用@TerminalDefault
and之间有什么区别set 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
推荐阅读
- vb.net-2010 - 如何创建三操作数计算器
- android - 为什么通过自定义编辑文本从 onSelectionChanged 引用变量时没有实例化?
- queue - Slurm 工作越来越饿
- chatbot - 如何在使用 azure bot 框架直接网络聊天时重新加载页面后加载以前的聊天记录
- java - 在 EclipseLink 上使用 pgcrypto 模块
- python - 如何根据熊猫中的某些条件更新数据框?
- android - 如何在适用于 Android Oreo 及更高版本的 Android Material EditText 中更改气泡光标颜色?
- python - BlockingIOError:[Errno 11] 资源暂时不可用。这是什么原因造成的?
- php - 在gridview中按FK搜索过滤用户
- python - 创建自定义张量流层的规则