Главная :: gnuplot :: Размещение нескольких графиков на одном листе
Освещаем жизнь. Всегда в наличии натриевые лампы различной мощности по доступной цене.
Plug&Pray

Размещение нескольких графиков на одном листе

Для построения нескольких отдельных графиков используется команда set multiplot:

set multiplot

Настройка команды осуществляется с помощью необязательных опций:

Замечание. На некоторых терминалах построение графиков происходит только при наличии команды unset multiplot обозначающую конец режима построения нескольких графиков.

Если определена верстка опцией layout r, c, то количество отображаемых графиков (команд вида plot) должно быть меньше или равно r*c (если графиков меньше, чем r*c, то останутся пустые места). При этом размещение графиков и их размер определяется автоматически - размещение согласно правилам rowsfirst|columnsfirst и downwards|upwards, а размер вычисляется по формуле (sx/r, sy/c). Приведем пример для автоматической верстки:

set term png \
    enhanced \
    size 400, 200 \
    font "arial, 8"

set output "multiplot.png"

set xrange[-4:4]
set xtics 2
set key off
set size square

set multiplot \
    title "Общий заголовок" \
    layout 1, 2 \
    scale 1.05 \
    offset 0.05, 0

set title "e^{0.5x} P_1(x) / P_2(x)"
set ylabel "величина"
set ytics 1
plot (1 + x) * (2 - x) * exp(x/5) / (1 + x**2) with points pt 5 ps 0.2

set title "sinh(x)"
unset ylabel
set ytics 15
plot sinh(x) ls 2 lw 2

unset multiplot
Несколько графиков в gnuplot

Если опция layout не указана, то расположение каждого графика нужно задавать в формате:

set size sx, sy
set origin ox, oy
plot ...

set size определяет размер графика, а set origin его расположение (нижний левый угол). Отметим, что с помощью ручного задания размера и положения графиков можно создать произвольную верстку.

set term png \
    size 400, 200 \
    font "arial, 8"

set output "multiplot2.png"

set key off

set size 2, 1
set multiplot

set xrange[-15:4]
set yrange[-1.5:2.4]
set xtics 2
set size 1.2, 1
set origin -0.5, 0
plot (1 + x) * (2 - x) * exp(x/5) / (1 + x**2) with points pt 5 ps 0.2

set xrange[-1:2]
set yrange[0.5:2.4]
set ytics 0.5
set size 0.4, 0.6
set origin 0.1, 0.4
plot (1 + x) * (2 - x) * exp(x/5) / (1 + x**2) with points pt 5 ps 0.2

set xrange[-1:1]
set yrange[-1:1]
set xtics 0.5
set size 0.35, 0.5
set origin 0.65, 0
plot sinh(x) ls 2 lw 2

set origin 0.65, 0.5
plot sin(5*x) ls 3 lw 2

unset multiplot
Несколько графиков в gnuplot
Ручная верстка