如何在gnuplot中绘制自动输入数据系列?

时间:2014-04-17 10:24:43

标签: plot gnuplot

我有很多想要绘制的结果并自动保存。我试图在帮助手册中找到但尚未找到。当我绘制每个文件时,我花了很多时间。你能帮我吗?

例如,我有10个文本文件,其名称是conf-a00到conf-a09,我想自动绘制并保存它们。

非常感谢你的帮助。

荣-都

1 个答案:

答案 0 :(得分:1)

您有几种可能性:

  • 您可以使用“模板”。

例如,如果您有以下文件foo.gpl:

#foo.gl
set term png
set output "OUTFILE"
plot "DATAFILE" using 1:2 with lines

然后,您可以使用shell脚本修改模板:

#!/bin/bash
for i in {01..09}
do
    sed 's/DATAFILE/conf-a'${i} s/OUTFILE/graph'${i}'.png/' template.gnuplot > /tmp/foo
    gnuplot /tmp/foo
done
rm /tmp/foo
  • 在gnuplot中使用变量

有类似(未经测试)的东西:

在gnuplot中,你做

i = 1
n = 9
set term png
load "loop.gpl"

with loop.gpl包含:

datafile = "conf-a0".i
outfile  = "graph".i.".jpg"

set output outfile
plot datafile using 1:2 with lines
set output
i=i+1
if (i <= n) reread

(您有类似的答案here

  • in gnuplot&gt; 4.6

你可以使用foor loop:

do for [t=0:9] {
    datafile = sprintf('conf-a0%f',t)
    outfile = sprintf('graph%f.png',t)
    set output outfile
    plot datafile using 1:2 with lines
}

编辑: 使用您的信息:

cat newloop.gpl

datafile = "data-a0".i 
outfile = "graph0".i.".png" 
set output outfile 
plot datafile w lp lw 2.5 
i=i+1 
set output
if (i <= n) reread 

在gnuplot中:

gnuplot> i = 1 
gnuplot> n = 5 
gnuplot> set grid
gnuplot> set logscale x 
gnuplot> set xlabel 'P (kPa)' 
gnuplot> set ylabel 'Z' 
gnuplot> set format y "%.2f" 
gnuplot> set format x "10^{%L}" 
gnuplot> set title 'Coordination number in isotropic pressure cycle' 
gnuplot> set pointsize 2
gnuplot> 
gnuplot> load "newloop.gpl"

生成不同大小的图表:

-rw-rw-r-- 1 fred fred   5430 avril 17 23:20 graph01.png
-rw-rw-r-- 1 fred fred   5228 avril 17 23:20 graph02.png
-rw-rw-r-- 1 fred fred   5248 avril 17 23:20 graph03.png
-rw-rw-r-- 1 fred fred   5685 avril 17 23:20 graph04.png
-rw-rw-r-- 1 fred fred   5818 avril 17 23:20 graph05.png