-не так Часто Задаваемые Вопросы - update 2010/12/26
| >
|
Введение в Gnuplot - Применение gnuplot'a в жизниПакетная обработкаЗдесь мы объясним вам как построить график по уже приготовленному файлу. Файл построения "output.plt" был сохранён в последней части "Числовых данных" . Он содержит параметры и функции, некоторые из них определены по умолчанию, другие заданы пользователем. #!/usr/local/bin/gnuplot -persist # set terminal postscript landscape noenhanced monochrome \ # dashed defaultplex "Helvetica" 14 # set output 'output.ps' set xlabel "x" 0.000000,0.000000 "" set ylabel "y=exp(-x)" 0.000000,0.000000 "" set title "Pade approximation" 0.000000,0.000000 "" set xrange [ 0 : 2 ] noreverse nowriteback set yrange [ 0 : 1 ] noreverse nowriteback set mxtics 5.000000 set mytics 5.000000 set xtics border mirror norotate 1 set ytics border mirror norotate 0.5 plot "output.dat" using 1:2 title "Analytical" w l, \ "output.dat" using 1:3 title "L=1, M=2" w l, \ "output.dat" using 1:4 title "L=2, M=1" w l # EOF В начале файла вы можете увидеть часть, где определены терминал и имя сохраняемого файла. Вы можете нарисовать такой же график, если воспользуетесь командой load . Когда вы закончите другие вычисления и сохраните результаты в "output.dat", вы также сможете использовать этот файл для нового построения. gnuplot> load "output.plt" Вы также можете задать имя файла, как строковую опцию, когда будете обращаться к gnuplot. В этом случае gnuplot закончит работу только после выполнения последней строки в файле. График на вашем экране исчезнет. Чтобы это не случилось вставьте pause -1 в конец вашего файла. График будет отображаться на экране пока вы не нажмёте клавишу возврата. % gnuplot output.plt Опция -persist также позволяет отображать график на экране, как и в способе выше. В этом случае gnuplot завершает работу, но график остаётся на экране. % gnuplot -persist output.plt Эта опция уже присутствует в пакетном файле. Она может быть использована для разрешения на выполнение этого файла. % chmod +x output.plt % ./output.plt Таким образом вы можете закрывать окно каждый раз. Вы можете продолжить свою работу интерактивно в командной строке gnuplot как только загрузится файл построения. Однако пакетный режим более удобен. Сначала вставьте строку pause -1 в конец файла, затем
Повторите эту последовательность пока вы не получите нужный вам график. Если вы хотите работать с Postscript файлом, то последовательность действий будет следующей:
В этом случае, символ комментария '#' перед строками set terminal postscript и set output 'output.ps' должен быть удалён. Если вам не нужна задержка pause, то график не будет отображаться на экране. Построение нескольких графиковОчень удобно использовать gnuplot в научной деятельности, т.к. можно неоднократно использовать один и тот же файл для построения схожих графиков. Мы часто строим похожие графики, у которых оси имею одинаковые названия, одинаковые диапозоны и т.д., но численные данные в них отличаются. Gnuplot позволяет решить эту задачу, используя всего один файл с параметрами построения. Измените имя файла данных в команде plot "datafile" или используйте похожее имя файла данных, но содержащего различающиеся данные. Пакетный режим gnuplot очень полезная штука, когда вы хотите построить большое количество графиков за один раз. Здесь мы разбираем случай, когда у вас много файлов данных --- calc1.dat, calc2.dat, calc3.dat --- в вашей директории, и каждый файл содержит простые (X,Y) данные. Сначала мы построим график по файлу calc1.dat . Здесь мы определи заголовок графика, названия осей и их диапозоны, деления, как мы это делали в разделе "Числовые данные". set terminal png set output "calc1.png" set xlabel "Energy [MeV]" set ylabel "Cross Section [b]" set title "(n,2n) reaction" set xrange [ 0 : 20 ] set yrange [ 0 : 2 ] set mxtics 5 set mytics 5 set xtics 5 set ytics 0.5 plot "calc1.dat" using 1:2 notitle w l Изображение в PNG создано gnuplot, после выполнения файла data.plt . Если вам нужен файл в EPS, используйте set terminal postscript и измените имя и расширение файла, например, calc1.eps. % gnuplot < data.plt Теперь мы используем всё это, чтобы построить график по другому файлу. Чтобы сделать это, мы должны изменить имена файлов "calc1.dat" and "calc1.png" в данном файле. Мы заменим текст "calc1" на "calc2" с помощью UNIX команды - sed. Другой способ: указать имена файлов в командной строке как опции в командной оболочке скрипта. Следующая команда изменяет текст "calc1" на "calc2" в файле. % sed "s/calc1/calc2/g" data.plt | gnuplot Эта строка позволяет построить новый график в calc2.png. Вы можете повторть данную операцию для всех файлов данных. Когда количество данных не очень большое можно использовать shell-loop ('foreach' of csh, or 'for' of sh). csh, tcsh % foreach i (calc2 calc3 calc4 cal5) foreach? sed "s/calc1/$i/g" data.plt | gnuplot foreach? end sh, bash $ for i in calc2 calc3 calc4 cal5 ; do > sed "s/calc1/$i/g" data.plt | gnuplot > done Когда файлов много, вы можете убрать расширение '.dat' с помощью sed, как показано ниже. Будьте осторожны, т.к. используются кавычки. Внутренняя часть команды sed удаляет '.dat' с помощью переменной $i , а внешняя часть изменяет строки "calc1." $ for i in *.dat ; do > sed "s/calc1/`echo $i | sed "s/\.dat$//"`/g" data.plt | gnuplot > done Вы также можете создать командную оболочку для скрипта, чтобы строить графики один за одним. Один раз сделав такой скрипт, вы сможете использовать его и для других заданий. Скрипт может содержать много строк, соответствующих номерам ваших файлов данных. #!/bin/sh sed "s/calc1/calc2/g" data.plt | gnuplot sed "s/calc1/calc3/g" data.plt | gnuplot sed "s/calc1/calc4/g" data.plt | gnuplot sed "s/calc1/calc5/g" data.plt | gnuplot ... Чтобы сделать его, воспользуйтесь UNIX командами: 'ls' и 'awk'. Следующая строка показывает список команд, с помощью которых вы можете построить много графиков за раз. Чтобы сделать файл скрипта , переадресуйте этот сохраняемый файл( command > script.sh ). % ls *.dat | awk '{printf("sed \"s/calc1/%s/g\" data.plt | gnuplot\n",$1)}' Вы можете написать команды gnuplot непосредственно в скрипт файле оболочки, и указать имя вашего файла в командной строке как опцию. Чтобы сделать это, используйте "этот документ" для оболочек UNIX. В этом примере мы создали файл EPS "calc1.eps" из файла данных"calc1.dat." #!/bin/sh gnuplot << EOF set terminal postscript eps color enhanced set output "$1.eps" set xlabel "Energy [MeV]" set ylabel "Cross Section [b]" set title "(n,2n) reaction" set xrange [ 0 : 20 ] set yrange [ 0 : 2 ] set mxtics 5 set mytics 5 set xtics 5 set ytics 0.5 plot "$1.dat" using 1:2 notitle w l EOF Как вы можете заметить, в примере выше имена файла данных и EPS файла files (без расширений) были заменены переменной $1. Настоящие имена для тех переменных назначаются как опция командной строки для этого скрипт файла plot.sh. Этот скрипт создаёт EPS файл "calc1.eps" из файла данных "calc1.dat", при вызове команды, как показано ниже. С помощью данного способа вы можете строить графики по файлам данных, которые могут располагать в разных директориях, и сохранить результаты в ту же директорию. $ ./plot.sh calc1 Чтобы изменить имена файла данных и EPS файла, вы должны заменить переменные $1 в скрипте выше на $2, и дать два параметра командной строки для этого скрипта. Наконец следующий скрипт оболочки позволяет построить множество графиков за секунду. #!/bin/sh ./plot.sh calc1 ./plot.sh calc2 ./plot.sh calc3 ./plot.sh calc4 ... |