如何消除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
相关产品推荐
相关产品推荐

