Gnuplot,如何*跳过*丢失的数据文件?

时间:2012-07-23 10:20:45

标签: gnuplot

根据各种因素,我可能没有一个或多个数据文件,在预先定义的gnuplot绘图指令中引用,不存在。在这种情况下,我得到“警告:跳过不可读文件”,取消其余的说明。

有什么方法可以让gnuplot跳过任何丢失的数据文件并绘制所有现有文件?

2 个答案:

答案 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