2010-10-31 3 views
2

Я хотел бы построить серию вертикальных линий в gnuplot с заданным интервалом.Скрипт Gnuplot для цикла или добавления существующего графика

Некоторая информация о сюжете.

Сюжет - это в основном некоторые данные из файла .dat. Скрипт gnuplot вызывается сценариями bash, которые изменяют сценарий построения gnu с помощью sed. Это уловка старого сценария bash (уродливый, я уверен).

sed -i 's/C = CONCEHOLD/C = '${$CO}'/g' $GNUPLOTROOT/plotviscosity.plt 
gnuplot $GNUPLOTROOT/plotviscosity.plt 
mv my-plot.ps $VISCPLOTNAME 
sed -i 's/C = '${$CO}'/C = CONCEHOLD/g' $GNUPLOTROOT/plotviscosity.plt 

с. Файл plt выглядит так.

set title "Viscosity vs Time, C = CONCEHOLD, beta = RATHOLD, zeta = ZETAHOLD" 
set xlabel "Time" 
set ylabel "Viscosity" 
plot "viscout.dat" using 3:2 title 'Viscosity' 
# Saving to my-plot.ps 
load save.plt 
# 

Я хотел бы добавить к этому графику серию вертикальных линий в заданном повторяющемся интервале. Я обнаружил, как построить вертикальные линии с помощью http://t16web.lanl.gov/Kawano/gnuplot/parametric-e.html

set parametric 
const=3 
set trange [1:4] 
set xrange [0:5] 
set yrange [0:5] 
plot const,t 

Я хотел бы иметь

const=repititionperiod*i 

, где я представляет собой целое число, принадлежащих к (1, calculateduppedlimit].

я мог входной repititionperiod через sed снова и в подобном тщетном вычисляемом uppedpeditit, но нуждаются в каком-то цикле для цикла либо внутри gnuplot, либо в отдельном скрипте gnuplot, который добавляет вертикальную линию к уже созданному графику в цикле for в моем сценарии bash.

Я не могу найти информацию о циклах в графике gnu или добавить к ранее созданному графику.

Любой совет с благодарностью получил.

ответ

3

EDIT: Gnuplot делает сейчас на самом деле теперь поддерживает для цикла, вы можете прочитать об этом here

Как я понимаю Gnuplot не имеет цикл, хотя вы можете создать один из видов следующим :

Сделать файл "loop.gp", содержащий

const = const + 1 
#... some gnuplot commands ... 
if(const<100) reread 

затем в GNUPLOT терминале или сценария записи,

const = 3; load "loop.gp"; 

Это даст вам простой цикл.

(этот пример взят из раздела Разное. Из http://t16web.lanl.gov/Kawano/gnuplot/index-e.html)

Для вашего конкретного ответа вы можете попробовать добавить стрелки, а не paremetric линий, например.

set arrow from const,1 to const,4 nohead 

будет делать то же самое.

В этом случае вы выполняете цикл.зм может быть

const = const + repititionperiod 
#... some gnuplot commands ... 
set arrow from const,1 to const,4 nohead 
if(const<calculatedupperlimit) reread 

и вы бы работать вам цикл с

const = 1; repititionperiod=2;calculatedupperlimit = 10; load "loop.gp"; replot; 

Replot участки стрелки.

Если вы «просто» хотите линии и ничего больше - тогда вам нужно будет подавать график на график (набор стрелок не учитывается). Приведенный ниже пример можно использовать для построения первой вертикальной линии.

надеюсь, что это поможет.

Том

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