GNUPLOT

-не так Часто Задаваемые Вопросы-

обновлено 2010/12/26

О 2D Plot (No.3)

1 | 2 | 3 | 4 | 5 | 6 | 7

Я хочу нарисовать несколько фигур на одном рисунке

Есть два способа создания рисунка, содержащего несколько фигур. Первый использует multiplot . Другой состоит в использовании формата EPS, тогда файлы в этом формате соберутся TeX или другими инструментами рисования. Здесь объясним команду multiplot .

Командой set multiplot входите в режим multi-plot, командная строка Gnuplot обращается в multiplot> . В этом моде новая фигура накладывается на старую. Следующий пример показывает накладывание трех функций: y=x, y=x*x и y=x*x*x.

gnuplot> set multiplot
multiplot> plot x
multiplot> plot x*x
multiplot> plot x*x*x
multiplot> set nomultiplot
fig/sample5.10a

Gnuplot определяет диапазон, деления и размер фигуры для каждого построения, что приводит к неразберихе. Попытаемся зафиксировать X и диапазон Y [-10:10] и сотрем легенду командой no key , т.к.она накладываются.


gnuplot> set xrange [-10:10]
gnuplot> set yrange [-10:10]
gnuplot> set nokey
gnuplot> set multiplot
multiplot> plot x
multiplot> plot x*x
multiplot> plot x*x*x
multiplot> set nomultiplot
fig/sample5.10b

Это гораздо лучше. Но так можно сделать и обычными процедурами построения. Команда multiplot позволяет нарисовать несколько фигур на одной, перемещая исходную точку каждой фигуры. Для этого используют команды set size и set origin.


Пример использования multiplot. 4 фигуры Лиссажу строятся в одном рисунке. Фигура Лиссажу задается параметрическим изображением двух функций: x=sin(n*t) и y=sin(m*t). Рассматриваем случай n=3,5 и m=2,4.

gnuplot> set parametric

        dummy variable is t for curves, u/v for surfaces
gnuplot> set noxtic
gnuplot> set noytic
gnuplot> set nokey
gnuplot> set size square 0.3,0.3
gnuplot> set rmargin 0 
gnuplot> set lmargin 0 
gnuplot> set tmargin 0 
gnuplot> set bmargin 0 
gnuplot> set multiplot
multiplot> set origin 0.1,0.1
multiplot> plot sin(3*t),cos(2*t)
multiplot> set origin 0.1,0.5    
multiplot> plot sin(3*t),cos(4*t) 
multiplot> set origin 0.5,0.1    
multiplot> plot sin(5*t),cos(2*t) 
multiplot> set origin 0.5,0.5    
multiplot> plot sin(5*t),cos(4*t) 
multiplot> set nomultiplot
fig/sample5.10c

Чтобы сделать фигуры одно размера, деления стираются с помощью noxtic и noytic , и четыре грани задаются нулевыми.

Обычно трудно регулировать позицию каждой фигуры. Это не легкий способ определения значений точки origin, и придется поработать методом "проб и ошибок". Когда фигура имеет деления и подписи, размер так же зависит от них. В этом случае корректировка позиций становиться очень строгой.

up

Я хочу нарисовать координатную сетку на дополнительных делениях

Команда set grid создает сетку на главных позициях делений. Для того чтобы создать их на дополнительных делениях:

gnuplot> set mxtics 5
gnuplot> set mytics 5
gnuplot> set grid xtics ytics mxtics mytics

Это дает пять координатных сеток на дополнительных делениях между главными. Можно конкретизировать позицию сетки опциями xtics ... mytics команды set grid. Если использовать set grid noxtics noytics mxtics mytics, координатные сетки появяться только на дополнительных делениях (но я не думаю, что кому-то понравиться такой график, хотя...)

up