我有一个数据文件,我想用gnuplot绘图.但是,对于y轴,我希望gnuplot忽略某个值以下的所有点.有没有一种简单的方法可以做到这一点,尤其是数据文件庞大?
有(至少)2种方法,不依赖于外部工具.
IGNORE_BELOW=50
set yrange [IGNORE_BELOW:] #ignore points below 50, but your yrange will start at 50.
Run Code Online (Sandbox Code Playgroud)
第二种方法是在using语句中使用gnuplot三元运算符.请注意,gnuplot在执行文件IO时会静默忽略未定义的值(1/0).
IGNORE_BELOW=50
filter(x)=(x>=IGNORE_BELOW)?(x):(1/0)
plot 'mydatafile.dat' u 1:(filter($2))
Run Code Online (Sandbox Code Playgroud)
这假设您有一个空格分隔的数据文件,并且您想要绘制x轴上的第一列和y轴上的第二列(以典型的gnuplot方式).
第一种方法最简单,但它不允许您修剪您想要绘制范围内的点.第二种方式有点丑陋,但更通用,可用于为gnuplot数据制作各种输入过滤器.
当然,如果你的gnuplot支持管道并且你想使用外部工具来编写过滤器,你也可以这样做.只需要工具接受数据文件作为输入并将修改后的数据写入stdout.然后在gnuplot:
plot "< mytool.ext mydatafile" ...
Run Code Online (Sandbox Code Playgroud)
对于这个问题,awk将是一个很好的工具.
| 归档时间: |
|
| 查看次数: |
5884 次 |
| 最近记录: |