我有多个* .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
答案 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$")