Gnuplot嵌套在同一图表上进行循环和绘图

时间:2013-05-05 22:50:56

标签: gnuplot

您好我正在使用gnuplot创建大量图表。为了保存自己的工作,我编写了一个脚本,试图绘制所有可能的图形。

#!/usr/bin/gnuplot

reset
is_missing(x)=system("./ismissing.sh ".x)
set terminal post eps enhanced color
set key inside right top vertical Right noreverse enhanced autotitles box linetype -1 linewidth 1.000
set grid
models="Cebeci-Smith Baldwin-Lomax Spalart-Allmaras Launder-Sharma Chien"
files="./CebeciOut/ ./BaldwinOut/ ./SpalartOut/ ./LaunderOut/ ./ChienOut/"
xgrid="35000 70000 140000 280000 560000"

# Plot grid convergence Spalart
do for [f=1:words(files)]{
    set output sprintf('%s%s',word(files,f),'ZPGGridConvergence.eps')
    set title sprintf("%s%s",word(models,f), " ZPG Grid Convergence")
    set xlabel "N_y"
    set ylabel "C_f Final"
    print f
    do for [i=1:words(xgrid)]{
        filename=sprintf("%s%s%s%s",word(files,f),'yconv_',word(xgrid,i),"x")
        if(is_missing(filename)==0){
            plot filename using 1:2 title sprintf("%s%s",word(xgrid,i), " X Gridpoints") with linespoints
        }
    }
}

不幸的是我有一个问题,经过一次完整的迭代后,脚本失败了,即尽管第一个图表成功完成,但f永远不会成为2。给出的错误是

cannot open file; output not changed
line 25: util.c: No such file or directory

我没有设法破译。任何帮助将非常感激。还有一种方法可以在此循环中使用重新绘制,因为我尚未创建绘图。 感谢

1 个答案:

答案 0 :(得分:1)

“files”实际上是代码中的dirs。

如果要将输出放在子目录中,请确保它存在且可写。

gnuplot无法自动创建子目录。您可以在代码中添加system("mkdir -p ".word(files,f))(在linux / unix上)以根据需要创建目录。