1626435587-51311eae4652e8ad616b5bdef025cbb3 (844239), страница 4
Текст из файла (страница 4)
Возможна также «ручная» настройка, для чего вконце записи команды plot можно указывать with points для отрисовки графика с помощью точек (маркеров), with lines — для отрисовки линиями, with linespoints — линиями с точками и т. п. Полныйперечень возможностей gnuplot см. в разделе справки help plottingstyles. Лаконичный вариант тех же опций: w p, w l и w lp. Например, команда plot sin(x) w lp нарисует график sin линиями с маркерами.
При желании можно управлять толщиной (linewidth), типом16(linetype, dashtype7 ) и цветом (linecolor) линий, стилем и размероммаркеров (подробности см. в разделе справки help with, где перечислены всевозможные способы построения графиков и доступные для нихопции). Список названий цветов и их RGB представление можно посмотреть, набрав команду show colornames. Также можно указыватьцвета в виде текстовой строки вида #rrggbb, где rr, gg и bb — шестнадцатиречные коды красной, зелёной и синей компонент.
Например,строка "#ff0000" кодирует красный цвет, а "#ffff00" — жёлтый. Чтобы каждый раз не указывать в команде plot потенциально длинныйсписок стилей отображения линий и маркеров, их можно определить7 . Паракомандой set style lineметрами отображения легенды на графике также можно управлять(подробности см. в справке help key либо набрав show key для отображения текущих настроек).Заметим, что даже если график функции представляет собой гладкую линию, gnuplot вычисляет значения функции при построении графика в ограниченном числе точек (samples), соединяя их линиями.При построении графиков быстро осциллирующих функций заданногопо умолчанию числа точек (100) может оказаться недостаточно, в этомслучае следует использовать команду наподобие set samples 500.Обязательным требованием редакций научных журналов и простоправилом хорошего тона является наличие подписей осей на графиках.Для этого в gnuplot предусмотрены команды set xlabel, set ylabel.Например, команда set xlabel "Время, с"; set ylabel "Мощность,Вт" будет уместна при построении графика зависимости мощности отвремени.
Точка с запятой позволяет записывать несколько команд подряд в одной строке, что иногда делает особенно удобным использованиеистории команд, доступной при нажатии стрелок «вверх» и «вниз» наклавиатуре. Указать название для графика в целом можно с помощьюкоманды set title. Напомним, что внесённые командами set изменения станут заметны лишь после следующего вызова plot или replot.Чтобы изменить пределы, в которых gnuplot построит график, можно указать требуемые значения в квадратных скобках после командыplot.
Так, команда plot [0:2*pi] sin(x) построит график синуса напромежутке от 0 до 2 ; команда plot [0:2*pi][-0.1:1.1] sin(x) дополнительно ограничит отображаемый интервал по вертикальной осиот -0,1 до 1,1. Другая возможность решения той же задачи — команды set xrange [0:2*pi] и set yrange [-0.1:1.1]. Если необходимо,чтобы gnuplot выбирал то или иное значение предела самостоятельно<номер-линии> <список-стилей>7Начиная с версии 5 gnuplot.17в зависимости от отображаемых данных, следует использовать символ«звёздочка». Например, команда set yrange [0:*] заставит gnuplotрисовать графики на положительной полуоси , выбирая верхний предел отображаемых значений автоматически.Для отображения графиков в полярных координатах () предусмотрен режим polar:set polarplot tunset polar#построение графиков в полярных координатах r(t)#строим график r(t)=t - спираль#возвращаемся к декартовым координатам x,yGnuplot позволяет строить графики функций, заданных параметрически ((), ()).
Например, следующий код нарисует две фигурыЛиссажу (рис. 1 ( )):аset parametric #активируем режим построения параметр. функцийset xrange [-1.3:1.3]; set yrange [-1.3:1.3] #диапазон по x,yset xlabel ’X’ ; set ylabel ’Y’#подписи осей (X,Y)set samples 500#будем строить графики по 500 точкамset key off#отключаем отображение легенды на графикеset xtics 1.0 ; set ytics 1.0 #определяем шаг штрихов по осямset mxtics 5 ; set mytics 5 #количество промежуточных деленийset style line 1 linecolor "gray70" lw 3 #стиль1 линий граф.set style line 2 lc "black" linewidth 1 #стиль2 линий графиковplot [0:2*pi] sin(t)/2,cos(3*t)/2 ls 1, \sin(5*t),cos(3*t) ls 2unset parametric #возвращаемся в режим построения явных ф-цийЧасто в физике возникает необходимость отобразить на одном графике величины разных порядков. Для этого удобно использовать парные оси и 2 слева и справа от графика.
В качестве примера рассмотримпостроение графика функции Бесселя 0 (), её асимптотики√︀2/() · cos( − /4) и модуля их разности (рис. 1 ( )):бasj0(x)=sqrt(2./pi/x)*cos(x-pi/4)#определяем новую функциюset samples 500#будем строить графики по 500 точкамset xlabel ’X’ ; unset ylabel#подписи нижней и левой осиset y2label ’Невязка’ textcolor "gray50"#подпись правой осиset xrange [0.01:24]#диапазон по X при построении графиковset yrange [-2:1.3]#диапазон, отображаемый на левой оси Yset y2range [3e-4:3]#диапазон изменения на правой оси (Y2)set xtics 5 ; set ytics nomirror (-0.5,0,0.5,1,1.5)#штрихиset my2tics 1#промежуточные деления на правой оси Y218set key right top font "Arial,11"#параметры легенды#показываем штрихи на оси Y2, выбираем формат и цвет чисел:set y2tics format "10^{%T}" textcolor "gray50"set logscale y2 #используем логарифмич.
масштаб на правой осиset style line 1 linecolor "black" linewidth 2.5 #определяем>>set style line 2 lc "gray50" lw 1#стили линий графиковplot besj0(x) with lines linestyle 1 title ’J_0(x)’, \abs(besj0(x)-asj0(x)) ls 2 axes x1y2 t ’невязка’Другим примером использования двойных осей является отображение величин в разных размерностях: в калориях и Джоулях, МэВ иатомных единицах, ГГц и см−1 и т. п. В оптике часто бывает необходимо строить спектры на связанных осях частот и длин волн какпоказано в следующем примере и на рис. 1 ( ):вset xlabel ’Частота, ТГц’#подпись нижней оси (X)set ylabel ’Дисперсия {/Symbol b}_2, пс^2/км’#подпись оси Yset x2label ’Длина волны, мкм’#подпись верхней оси (X2)set xrange [190:610]#диапазон по X при построении графиковset xtics nomirror 100 #отменяем зеркальные штрихи, задаём шагset ytics 100#задаём шаг штрихов по оси Yset x2tics (0.5,0.6,0.8,1,1.4)#положение штрихов на оси X2#Определяем связь верхней оси X2 с нижней X (поддерживается >>set link x2 via 300/x inverse 300/x#начиная с Gnuplot v.5)set key off#отключаем отображение легенды на графикеset grid#показываем координатную сеткуset label 1 "(в)" at screen 0.1, screen 0.9 font ",14" #метка#показываем штрихпунктирной линией ноль дисперсии на графике:set arrow 1 from 420,graph 0 to 420,graph 1 \nohead lc "gray40" dashtype ".-._"set label 2 "{/Symbol l}_0" at 410,0 offset 0.55,-0.4set terminal pdfcairo enhanced color lw 0.75 \font "Arial,12" size 5cm,5cmset output ’DispersionTF.pdf’#перенаправляем вывод в файлplot ’beta2_d=2000nm.dat’ u ($1*500/pi):($2) w l lc "black"По умолчанию, каждый следующий вызов команды plot приводитк очистке построенного ранее графика.
В случае, когда необходимосовместить несколько графиков в виде панелей (подобно тому, как организован рис. 1), либо сделать врезку на графике, можно использовать режим multiplot, активируемый и отключаемый командами setи unset.19(б)10.50-0.50J0(x)невязка10010-110-210-3-1-1015XДисперсия β2 ×10-2, пс2/км(в)10 15 20XДлина волны, мкм1.4 1 0.8 0.6 0.5(г)102λ0-11-2-3200 300 400 500 600-2Частота, ТГц02Частота, отн.ед.Y1Невязка(а)0XРис. 1.
Построение графиков в gnuplot: (а) параметрические функции, (б)отображение величин разных порядков, (в) связанные оси, (г) гистограммаПовысить информативность графика и сделать более понятным егоописание можно, добавив на график дополнительные подписи и метки (label), а также линии и стрелки (arrow). Пример использованияметок и линий показан на рис. 1 ( ) — вертикальной штрихпунктирной линией показана длина волны нулевой дисперсии 0 . Заметим,что gnuplot позволяет использовать пять способов задания координатдля указания положения произвольных линий, стрелок, текста и легенды. Их называют «первая» (first), «вторая» (second), «графическая»(graph), «экранная» (screen) и «символьная» (character).
«Первая»координата отсчитывается по нижней оси X и левой оси Y, «вторая» —по верхней оси X2 и правой оси Y2. «Графическая» координата опре-в20деляет относительную позицию точки в рамке графика8 . «Экранная»координата отсчитывается относительно всего экрана (бумаги), приэтом начало отсчёта расположено в левом нижнем углу, точка (1,1) — вправом верхнем. Если тип координаты не указан явно, по умолчаниюпредполагается, что задана «первая» координата.
Иногда удобно бывает комбинировать координаты разных типов — в приведённом вышепримере было использовано:set arrow 1 from 420, graph 0to420, graph 1Такой способ позволяет провести вертикальную линию через заданнуюточку 0 = 420 ТГц от низа (координата graph 0) до верха графика(graph 1) независимо от выбранных диапазонов отображения xrange,yrange по осям. Более подробную информацию можно получить, набрав help coordinates.С помощью gnuplot можно строить гистограммы и функции распределения по выборке реализаций случайной величины, сохранённойв текстовом файле. Например, на рис.