gnuplot命令set datafile missing "nan"
告诉gnuplot忽略数据文件中的nan
数据值。
如何忽略nan
和-nan
?我在gnuplot中尝试了以下内容,但是第一个语句的效果会被下一个语句覆盖。
gnuplot> set datafile missing "-nan"
gnuplot> set datafile missing "nan"
是否有可能在gnuplot命令中嵌入grep -v nan
,甚至某种regexp以排除任何可以想象的非数值数据?
答案 0 :(得分:7)
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
过滤器,将所有非数值替换为?
。
这很好用,但只允许选择列,例如使用using 1:2
,但不对列进行计算,例如using ($1*0.1):2
。要允许此操作,您可以过滤掉包含nan
,-inf
等grep
的任何行,就像在gnuplot missing data with expression evaluation中完成一样(感谢@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