根据各种因素,我可能没有一个或多个数据文件,在预先定义的gnuplot绘图指令中引用,不存在。在这种情况下,我得到“警告:跳过不可读文件”,取消其余的说明。
有什么方法可以让gnuplot跳过任何丢失的数据文件并绘制所有现有文件?
答案 0 :(得分:5)
这是一个没有帮助脚本的类似解决方案
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."
答案 1 :(得分:2)
不幸的是,如果没有简单的帮助脚本,我似乎无法弄清楚如何做到这一点。这是我的“助手”解决方案:
#!/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