1

我有一组具有相同 2 列格式的 csv 文件。我想生成与每个文件对应的单独的 xy 散点图,但样式相同。唯一应该改变的是输入和输出文件名。怎么做?

4

3 回答 3

7

andyras 发布的解决方案是完全可行的。但是,在这些情况下,“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
于 2012-05-19T18:38:06.497 回答
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 的命令行中。

于 2012-05-18T23:11:28.490 回答
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 
于 2012-05-18T22:43:34.010 回答