Gnuplot可以在运行时使用不同的参数吗?也许用Python?

use*_*336 11 python scripting gnuplot

我有500个文件要绘制,我想自动执行此操作.我有gnuplot脚本,用硬编码的文件名进行绘图.我希望有一个循环,每次迭代使用不同的文件名调用gnuplot,但似乎gnuplot不支持命令行参数.

有一个简单的方法吗?我还安装了gnuplot-python包,以防我可以通过python脚本来实现.但是,我找不到api,所以有点难以弄明白.

谢谢!

Sve*_*ach 22

您可以通过预先添加行来将gnuplot脚本转换为shell脚本

#!/bin/sh
gnuplot << EOF
Run Code Online (Sandbox Code Playgroud)

附加线

EOF
Run Code Online (Sandbox Code Playgroud)

而代以每$通过\$.然后,您可以替换文件名的每个出现,$1并使用文件名作为参数调用shell脚本.


小智 6

关于Sven Marnach解决方案中的$(在EOF之间的界限被称为"这里的脚本",用shell的说法):根据我的经验,一个人像往常一样使用shell变量,但是用于gnuplot本身的$ s必须被转义.

这是一个例子:

for distrib in "uniform" "correlated" "clustered"
do
    gnuplot << EOF
    # gnuplot preamble omitted for brevity

    set output "../plots/$distrib-$eps-$points.pdf"
    set title "$distrib distribution, eps = $eps, #points = $points"

    plot "../plots/dat/$distrib-$eps-$points.dat" using 1:(\$2/$points) title "exact NN"
EOF

done
Run Code Online (Sandbox Code Playgroud)

注意反斜杠逃避美元,以便gnuplot看到它.