根据各种因素,我可能没有 1 个或多个数据文件,在预定义的 gnuplot 绘图指令中引用,这些文件不存在。在这种情况下,我会收到“警告:跳过不可读的文件”,这会取消其余的说明。
有什么办法可以让 gnuplot 跳过任何丢失的数据文件并绘制所有现有的数据文件?
根据各种因素,我可能没有 1 个或多个数据文件,在预定义的 gnuplot 绘图指令中引用,这些文件不存在。在这种情况下,我会收到“警告:跳过不可读的文件”,这会取消其余的说明。
有什么办法可以让 gnuplot 跳过任何丢失的数据文件并绘制所有现有的数据文件?
这是一个没有帮助脚本的类似解决方案
file_exists(file) = system("[ -f '".file."' ] && echo '1' || echo '0'") + 0
if ( file_exists("mydatafile") ) plot "mydatafile" u 1:2 ...
部分是将+ 0
结果从字符串转换为整数,这样你也可以使用否定
if ( ! file_exists("mydatafile") ) print "mydatafile not found."
不幸的是,如果没有简单的帮助脚本,我似乎无法弄清楚如何做到这一点。这是我使用“助手”的解决方案:
#!/bin/bash
#script ismissing.sh. prints 1 if the file is missing, 0 if it exists.
test -e $1
echo $?
现在,使其可执行:
chmod +x ismissing.sh
现在在您的 gnuplot 脚本中,您可以创建一个简单的函数:
is_missing(x)=system("/path/to/ismissing.sh ".x)
然后你保护你的情节命令如下:
if (! is_missing("mydatafile") ) plot "mydatafile" u 1:2 ...
编辑
看来 gnuplot 并没有因为您的文件丢失而窒息 - 当 gnuplot 尝试根据丢失的数据设置绘图范围时出现实际问题(我假设您正在自动缩放轴范围)。另一种解决方案是显式设置轴范围:
set xrange [-10:10]
set yrange [-1:1]
plot "does_not_exist" u 1:2
plot sin(x) #still plots