2012-05-18 2 views
1

У меня есть коллекция файлов csv с тем же 2-х столбчатым форматом. Я хотел бы создавать отдельные графики разброса xy, соответствующие каждому файлу, но с тем же стилем. Единственное, что должно измениться, это входные и выходные имена файлов. Как это сделать?Как создать сборку csv-файлов в gnuplot?

ответ

6

Решение, отправленное andyras, отлично работает. Однако в этих случаях «ЗДЕСЬ» файлы, как правило, лучше, так как это позволяет избежать порождая дополнительный процесс и так как вы не будете иметь проблем с смешивая одинарные и двойные кавычки ...

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 
+0

Мне нравится этот, потому что он чище. Благодаря! – Derrick

+0

@ Редакторы: Спасибо :). – mgilson

2

Сначала создайте текстовый файл, содержащий всю информацию о стиле, скажем gplot_prefix.txt. Затем я предполагаю, что у вас есть шаблон, который соответствует всем файлам, которые вы хотите построить, например *.dat. Затем сделать ЗШ скрипт следующим образом:

foreach arg in [email protected] 
    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} 

(это может иметь ошибки, мой ЗШ не работает правильно прямо сейчас) и назовите его как

./plotscript.zsh *.dat 
2

Вы можете создать обертку Баш скрипт и сохранить его как 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.

+0

Oh, @Dan отвечал довольно почти такое же решение. – andyras