gnuplot - 为什么 gnuplot 启动后终端大小未定义?
问题描述
在 gnuplot(控制台)启动后,即使没有指定终端和画布大小,也定义了默认值,在我的例子中wxt
和640,384
.
没有绘制任何东西,如果我输入控制台或在脚本中使用:
print GPVAL_TERM_XSIZE, GPVAL_TERM_YSIZE
我会收到一个错误:
undefined variable: GPVAL_TERM_XSIZE
我知道许多其他GVPAL_...
变量取决于情节和数据本身。因此,很明显,只有在您绘制了某些内容时才定义它们。
但是如果有默认值,为什么启动后是GPVAL_TERM_XSIZE
和未定义的呢?GPVAL_TERM_YSIZE
即使我指定了大小,以下仍然会给出相同的错误:
set term wxt size 500,400
print GPVAL_TERM_XSIZE, GPVAL_TERM_YSIZE
我知道我可以(或者我必须)做一些虚拟图来初始化GPVAL_TERM_XSIZE
和GPVAL_TERM_YSIZE
值。但为什么这是必要的?谢谢你的解释。
解决方案
在程序输入时,当前终端的名称(通常是默认终端,但您可能在 ./gnuplot 中更改了它)会打印到控制台。但是直到第一个 plot 命令才真正打开终端。这使您有时间在绘图之前更改终端或设置不同的终端属性。首次打开终端时,它会填写各种 GPVAL_TERM 值,包括其当前大小。
GPVAL_* 程序变量在每个绘图命令后更新。那些依赖于最新图的那些,包括所有 GPVAL_TERM_* 变量,直到第一个图之后才存在。
推荐阅读
- c++ - operator<< 如何与操纵器函数一起使用
- c# - 如何在 ASP.NET Core Web API 中管理 EFCore DbContext 生命周期?
- objective-c - 您可以在 Objective-C 中创建仅在您的库中可见的类方法吗?
- scala - 多项目构建中的 sbt 每个用户设置
- java - Apache-Camel Quartz simpleTrigger repeatCount 和 repeatInterval 在第一次触发事件后不触发事件 fireNow
- firebase - 在 OTP 验证后 Flutter Android App 崩溃
- sql-server - 将频率表转换回非频率表(取消分组)
- kubernetes - 来自环境的 Kubernetes 活性端口
- python - 如何绘制 Z 轴为 csv 中值大小的 3D 图?
- time - 重新启动 VM 时系统时间不正确