我正在使用gnuplot 4.6
。另外,我知道一年多以前就提出了类似的问题here。答案需要编写一个小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
。
谢谢&干杯
阿比纳夫
答案 0 :(得分: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
命令方法,我仍然会感激不尽。