如何将点数削减到一定值以下

时间:2012-06-11 12:52:25

标签: gnuplot

我有一个数据文件,我想用gnuplot绘制。但是,对于y轴,我希望gnuplot忽略某个值以下的所有点。有没有一种简单的方法可以做到这一点,尤其是数据文件庞大?

1 个答案:

答案 0 :(得分:8)

有(至少)2种方法,而不依赖于外部工具。

IGNORE_BELOW=50
set yrange [IGNORE_BELOW:]  #ignore points below 50, but your yrange will start at 50.

第二种方法是在using语句中使用gnuplot三元运算符。请注意,在执行文件IO时,gnuplot会静默忽略未定义的值(1/0)。

IGNORE_BELOW=50
filter(x)=(x>=IGNORE_BELOW)?(x):(1/0)
plot 'mydatafile.dat' u 1:(filter($2))

这假设您有一个空格分隔的数据文件,并且您想绘制x轴上的第一列和y轴上的第二列(以典型的gnuplot方式)。

第一种方法最简单,但它不允许您修剪您想要绘制的范围内的点。第二种方式有点丑陋,但更通用,可以用来为gnuplot数据制作各种输入过滤器。

当然,如果您的gnuplot支持管道并且您想使用外部工具编写过滤器,那么您也可以这样做。只需要工具接受数据文件作为输入并将修改后的数据写入stdout。然后在gnuplot:

plot "< mytool.ext mydatafile" ...

对于这个问题,awk将是一个很棒的工具。