2014-01-22 4 views
6

Я хотел бы сгенерировать несколько графиков с использованием Gnuplot, поэтому мне нужно использовать loop. Данные загружаются из файлов «sort'i'.dat». Код показан ниже, но он не работает. У меня проблема с основным контуром. Я не знаю, почему это не работает, возможно, это связано с моей версией Gnuplot. Благодарю.Создание графиков в Gnuplot с использованием петель

do for [i=0:10] { 
    set term png 
    set output 'sort'.i.'.png' 
    set title "Quick sort" 
    set xlabel "Position number"    
    set ylabel "Number on position" 
    unset key        
    plot 'sort'.i.'.dat' using 1:2 with points pt 5 
} 

Ошибка: "строка 1: недопустимый комплексная константа"

ответ

5

Этот вид do for итерации была введена в версии 4.6.0:

Следующая итерация работает только начиная с 4.6.0 :

do for [i=0:10] { print i } 

итерация

plot for [i=0:10] i*x 

работает также с 4,4

один другим вариантом для 4.4, хотя и довольно некрасиво, было бы «аутсорсинг» итераций. Только две строки зависят от переменной итерации, что делает это возможным. Вы построить все инструкции сюжетные вне Gnuplot, а затем eval полную строку:

В качестве примера с использованием Баш:

set terminal pngcairo 
set title "Quick sort" 
set xlabel "Position number"    
set ylabel "Number on position" 
unset key 
set style data points 

loopstr = 'set output ''sort%d.png''; plot ''sort%d.dat'' using 1:2 pt 5; ' 
eval(system('exec bash -c "for ((a=0;a<=10;a++)) do printf \"'.loopstr.'\" \$a \$a; done" ')) 

Для exec bash см gnuplot and bash process substitution. Конечно, вы можете использовать любую другую программу для выполнения итерации.

Но это, конечно, не заменяет легкость внутренних итераций gnuplot. Почему бы не обновить до 4.6?

+1

Хорошо, но это «сюжет для [я = 0: 10] я * х» работает только для одной строки, но мне нужно это для двух линий тот же «i» для: «графика для [i = 0: 10] i * x» и для: «plot» sort'.i. '. dat' с использованием 1: 2 с точками pt 5 " – user1519221

+0

Дело в том, что показать, что вам нужна хотя бы версия 4.6.0. Какая версия у вас есть? – Christoph

+0

У меня есть версия 4.4. – user1519221

0

У меня была такая же проблема, и определенно версия gnuplot - проблема. Например, я работал над gnuplot 1.8.10.0, и получил сообщение, которое я показал на изображении 1. Затем я установил gnuplot 5.0, и он отлично работал! :).

gnuplot sample 1

gnuplot sample 2

Все лучшее

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