1

我正在使用gnuplot 4.6. 另外,我知道一年多前在这里提出了类似的问题。答案需要编写一个小bash脚本。我想知道是否可以从gnuplot脚本中实现这一点,尤其是当gnuplot-4.6添加了这么多很酷的功能时。我正在尝试实现这样的目标:

set xrange[xL:xU]
set yrange[yL:yU]
plot "file1.dat" using 1:2 w l lt 1 lw 1 lc 3,\
"file2.dat" using 1:2 w l lt 1 lw 1 lc 3

我在循环中重复上述过程,并且在每次迭代中都会更新xrange&yrange参数。另外,我将每次迭代的输出保存为一些图像文件。现在,file2.dat保证在所有迭代中都有一些点。但对于file1.dat. 因此,我想gnuplot跳过绘制file1.dat它以防它为空。请注意,在我的情况下,如果没有从file1.dat.

这可以使用if语句轻松实现,只要有一些命令gnuplot可以检测文件是否没有点,而无需尝试绘制它。在这种情况下,上面的代码将如下所示:

set xrange[xL:xU]
set yrange[yL:yU]
if ("file.dat" not empty){
plot "file1.dat" using 1:2 w l lt 1 lw 1 lc 3,\
    "file2.dat" using 1:2 w l lt 1 lw 1 lc 3
}else {
plot "file2.dat" using 1:2 w l lt 1 lw 1 lc 3
}

请帮助我制定'condition'上述if声明的内容。

感谢和干杯

阿比纳夫

4

1 回答 1

0

我找不到任何只使用gnuplot命令的黑客。结果,我发布了一个工作,它需要帮助shell查找是否file1.dat有任何数据行。

gnuplot脚本文件中的条件如下所示:

if(system("awk '{x++}END{ print x}' file1.dat")>0){
    plot "file1.dat" using 1:2 w l lt 1 lw 1 lc 3,\
    "file2.dat" using 1:2 w l lt 1 lw 1 lc 3
}else{
    plot "file2.dat" using 1:2 w l lt 1 lw 1 lc 3
}

如果有人能给我一个gnuplot仅限命令的方法,我仍然会很感激。

于 2013-10-19T08:54:04.090 回答