Gnuplot自动绘制所有数据文件

时间:2015-06-17 21:51:51

标签: bash gnuplot

我有多个* .data文件,每个文件都有相同的格式,可以用这个简单的脚本绘制:

cat << __EOF | gnuplot -persist
set terminal pdf
set output 'out.pdf'
set datafile separator ";"
set boxwidth 0.5
set style fill solid
plot "xxx.dat" using 1:3:xtic(2) with boxes
__EOF

如何自动将所有* .dat文件的图表合成为一个pdf?如果不能将所有图形绘制成一个文件,单独的pdf就足够了。

示例.dat文件:

0;name1;150
1;name2;65
2;name3;81

2 个答案:

答案 0 :(得分:2)

要将所有图形附加到单个pdf,您必须对gnuplot脚本内的文件进行迭代,并在循环之前设置输出文件:

这是gnuplot脚本iterate.gp

set terminal pdf
set output 'out.pdf'
set datafile separator ";"
set boxwidth 0.5
set style fill solid
files = system('ls *.dat')
do for [file in files] {
    set title file[:strlen(file)-4]
    plot file using 1:3:xtic(2) with boxes
}

调用
gnuplot iterate.gp

请注意,使用此解决方案,您的数据文件中不能包含空格。

答案 1 :(得分:1)

要创建多个pdf文件,请在同一路径中运行此脚本并使用*.dat文件为我工作(确保.dat文件名中不包含任何特殊字符)

#!/bin/bash

while IFS= read -r in; do
    out=${in/%.dat/.pdf}
    echo "Converting $in into $out"
    cat << __EOF | gnuplot -persist
    set terminal pdf
    set output "$out"
    set datafile separator ";"
    set boxwidth 0.5
    set style fill solid
    plot "$in" using 1:3:xtic(2) with boxes
__EOF
done < <(ls | grep "\.dat$")