You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何消除Gnuplot使用unknown终端时的警告信息?

问题

我在Gnuplot脚本中用以下代码片段计算数据的维度(设置size_x、min_x、max_x、size_y、min_y、max_y这些变量):

# Sets:
# size_x ,min_x, max_x,
# size_y, min_y, max_y.

# Dummy plot to get statistical properties without
# having "stats" command like with v4.4.4.

set terminal unknown
# Works with v4.4
# if ($# == 1) plot $0 using 1:2; else plot $0 using $1

# Works with v5.5
if (ARGC == 1) plot ARG1 using 1:2; else plot ARG1 using @ARG2

min_x = GPVAL_DATA_X_MIN
max_x = GPVAL_DATA_X_MAX
min_y = GPVAL_DATA_Y_MIN
max_y = GPVAL_DATA_Y_MAX

size_x = max_x - min_x
size_y = max_y - min_y

因为脚本只需要计算数值不需要绘图,所以特意设置了set terminal unknown,但运行时会弹出警告:WARNING: Plotting with an 'unknown' terminal.。我在Gnuplot提示符里试过set terminal,没找到dummy或null终端,当前用的是Gnuplot v5.4.2版本,请问怎么消除这个警告?


解决方案1:直接使用stats命令(推荐)

你的Gnuplot版本是5.4.2,已经原生支持stats命令,完全没必要用dummy plot的方式获取数据统计值,这种方法更高效且不会产生终端警告。改写代码如下:

# Sets:
# size_x ,min_x, max_x,
# size_y, min_y, max_y.

if (ARGC == 1) {
    stats ARG1 using 1:2 nooutput
} else {
    stats ARG1 using @ARG2 nooutput
}

min_x = STATS_min_x
max_x = STATS_max_x
min_y = STATS_min_y
max_y = STATS_max_y

size_x = max_x - min_x
size_y = max_y - min_y
  • stats命令专门用于计算数据的统计属性,nooutput参数会禁止生成任何输出,正好匹配你只计算数值的需求
  • 统计结果会存储在STATS_*前缀的变量中,比如STATS_min_x对应x列的最小值,和原来的GPVAL_*变量逻辑一致

解决方案2:消除unknown终端的警告

如果因特殊需求必须保留dummy plot的方式,可以通过关闭警告输出的方式抑制提示:

# 在设置unknown终端前先关闭警告输出
set print warning ""
set terminal unknown

# 原有绘图逻辑
if (ARGC == 1) plot ARG1 using 1:2; else plot ARG1 using @ARG2

min_x = GPVAL_DATA_X_MIN
max_x = GPVAL_DATA_X_MAX
min_y = GPVAL_DATA_Y_MIN
max_y = GPVAL_DATA_Y_MAX

size_x = max_x - min_x
size_y = max_y - min_y

# 可选:若后续脚本需要正常显示警告,可恢复默认设置
set print warning
  • set print warning ""会将警告输出重定向到空设备,从而屏蔽unknown终端的警告提示
  • 若脚本后续需要正常显示警告,可在计算完成后用set print warning恢复默认设置

内容的提问来源于stack exchange,提问作者emacs drives me nuts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 21:44:49