2014-10-02 3 views
1

Мне нужно построить пару кривых в одном окне. Используя цикл for в оболочке bash, я смог построить их на отдельных файлах, но не успел нарисовать их на одном рисунке. Я был бы признателен, если вы поможете мне в решении этой проблемы.gnuplot bashshell для построения нескольких кривых в одном окне

Я попытался реализовать пример в Thie ссылке for loop inside gnuplot?, но это дает мне ошибку говоря: «:» ожидаемый .Я уже GNUPLOT 4,2 установлен. Спасибо,

#!/bin/bash 

for Counter in {1..9}; do 
FILE="dataFile"$Counter".data" 
    gnuplot <<EOF 
    set xlabel "k" 
    set ylabel "p(k)" 
    set term png 
    set output "${FILE}.png" 
plot [1:50] '${FILE}' 
EOF 
done 

ответ

1

Looping внутри команды plot работает только начиная с версии 4.4 и будет выглядеть как

file(n) = sprintf("dataFile%d.data", n) 
plot for [i=1:9] file(i) 

Использование баш Я бы построить plot команду внутри цикла Баш и использовать это позже в Gnuplot сценарий:

for Counter in {1..9}; do 
    FILE="dataFile${Counter}.data" 
    if [ $Counter = 1 ]; then 
    plot="plot '$FILE'" 
    else 
    plot=$plot", '$FILE'" 
    fi 
done 
gnuplot <<EOF 
set xlabel "k" 
set ylabel "p(k)" 
set term png 
set output "output.png" 
$plot 
EOF 
+0

Спасибо за ответ. Однако ваше решение работает, моя проблема по-прежнему выходит, поскольку я опубликовал упрощенную версию. Для каждой кривой я также хотел бы подгонять экспоненциальную кривую к каждому набору данных. Снова я смог сделать это в своей оболочке, получив несколько выходных файлов. Если бы у вас был шанс, вы бы знали, как построить график для каждого набора как кривой, так и кривой кривой? – PyPhys

+0

Кстати, если вы считаете, что это заслуживает новой просьбы о потоке, дайте мне знать, я задам это как новый вопрос. – PyPhys

Смежные вопросы