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看到它.