我有一组具有相同2列格式的csv文件。我想生成与每个文件对应的单独的xy散点图,但具有相同的样式。唯一应该改变的是输入和输出文件名。怎么做?
答案 0 :(得分:6)
安迪拉斯发布的解决方案完全可行。但是,在这些情况下,“HERE”文件通常更好,因为它避免产生额外的进程,因为你不会有混合单引号和双引号的问题......
for file in $(echo *.dat); do
gnuplot <<EOF
set terminal post enh
set output "output_${file}.ps"
set datafile separator ',' #csv file
plot "$file" u 1:2
EOF
done
答案 1 :(得分:2)
首先,创建一个包含所有样式信息的文本文件,例如gplot_prefix.txt
。然后,我假设你有一些模式匹配你要绘制的所有文件,比如说*.dat
。然后,按如下方式创建一个zsh脚本:
foreach arg in $@
filename=${arg}_plotfile.pl
cp gplot_prefix.txt ${filename}
echo set output ${arg}.png >>${filename}
echo plot \"${arg}\" u 1:2 >>${filename}
gnuplot ${filename}
rm ${filename}
(这可能有错误;我的zsh现在无法正常工作)并将其称为
./plotscript.zsh *.dat
答案 2 :(得分:2)
您可以创建包装器bash脚本并将其另存为plot.sh
:
#!/bin/bash
echo "set terminal postscript enhanced
set output 'output_$1.eps'
plot '$1'
假设您的数据文件都有.dat
扩展名。你可以通过调用
for datfile in $(ls *dat) ; do ./plot.sh $datfile ; done
在bash的命令行中。