无法对 使用正则表达式set datafile missing
,但您可以使用任何程序在绘图之前过滤数据,并用一个字符替换正则表达式,例如?
您设置为标记缺失数据点的字符。
这是一个完成您最初要求的示例:过滤-nan
等inf
。为了测试,我使用了以下数据文件:
1 0
2 nan
3 -inf
4 2
5 -NaN
6 1
绘图脚本可能如下所示:
filter = 'sed -e "s/-\?\(nan\|inf\)/?/ig"'
set datafile missing "?"
set offset 0.5,0.5,0.5,0.5
plot '< '.filter.' data.txt' with linespoints ps 2 notitle
这给出了以下输出:
因此 plot 命令会跳过所有缺失的数据点。如果此变体还不够,您可以细化sed
过滤器以用 替换任何非数值。?
这很好用,但只允许选择列,例如 with using 1:2
,但不能对列进行计算,例如using ($1*0.1):2
。为此,您可以过滤掉包含 等的任何行,nan
就像-inf
它grep
在gnuplot 中使用表达式评估缺失数据所做的那样(感谢@Thiru 的链接):
filter = 'grep -vi -- "-\?\(nan\|inf\)"'
set offset 0.5,0.5,0.5,0.5
plot '< '.filter.' data.txt' with linespoints ps 2 notitle