GNUPLOT

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

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

О 2D Plot (No.6)

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

Совместить разными способами 2 фигуры отображающие одни данные.

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

  • Разместить 2 фигуры в разных масштабах.
    • Когда необходимо увеличить определенный диапазон X. Например, необходимо увеличить маленький регион X и построить данные с лагарифмической градацией, а другую часть оставить с нормальной.
  • Сравнить абсолютными величинами и отношением аналогичные друг другу данные
    • Когда строите 2 различных данных, значения Y которых очень близко друг к другу, очень трудно выделить 2 линии. Если необходимо показать, что эти данные очень похожи, то вероятно фигура в порядке. Однако, если необходимо показать сходство этих данных количественно, можно вычислить отношение этих данных и построить чтобы показать отклонениние от отношения=1. Делим фигуру на 2 части и сравниваем построение абсолютными величинами в верхней позиции, тем ниже их отношение.

up

Разместить 2 фигуры с разными масштабами.

fig/sample5.16a

Данные в качестве примера. Эта фигура имет диапазон X [0:30], но данные около X=0 тоже важны и необходимо их подробно показать. Конечно, можно построить 2 фигуры в разных масштабах, но мы скомбинируем их. Сначала построим данные меньше 1 в логарифмической градации.


gnuplot> set log xy
gnuplot> set xrange [ 0.001 : 1 ]
gnuplot> set yrange [ 0.1 : 5000 ]
gnuplot> set xlabel "Energy [eV]"

Для данных [1:30] используется нормальный масштаб построения и помещаем эту связанную логарифмической градацией фигуру используя multiplot . Чтобы придерживаться высокого региона X (правой стороны) низкого региона X (левой стороны), допускаем rmargin левой фигуры быть нулем и lmargin правой фигуры тоже быть нулем. Ширина тех двух фигур равна половине от обычной, после этого правая сторона фигуры тщательно рассматривается 0.5 используя set origin .

Мы нуждаемся в Y делениях для левой части фигуры, но для правой части они не нужны. Устанавливаем set lmargin 10 для левой, в то время как lmarginдля правой равен нулю. Добавление set format "" стирает значения оси Y.

gnuplot> set multiplot
multiplot> set size 0.5,1
multiplot> set origin 0.0,0.0
multiplot> set lmargin 10
multiplot> set rmargin 0
multiplot> plot "calc.dat" u 1:2 w l
multiplot> set origin 0.5,0.0
multiplot> set format y ""
multiplot> set lmargin 0
multiplot> set rmargin 2
multiplot> set nolog x
multiplot> set xrange [1:30]
multiplot> set xtic 0,10
multiplot> set mxtic 5
multiplot> plot "calc.dat" u 1:2 w l
multiplot> set nomultiplot
gnuplot>
fig/sample5.16b

Необходимо точно сказать что фигуры слева и справа находятся в разных масштабах. для этого помещаем незначительные деления на ось X. На границе 2 рисунков, значения оси X иногда накладываются друг на друга. Команда set xtics 0,10(начальное значение 0, прирост 10) помогает избегать делений в X=1.

Между прочим, эти данные, приведенные в пример, становятся линейными в дважды логарифмированной градации маленьких значений X, потому что это физическая виличина. Продемонстрировать такую особенность очень легко, если делить одну фигуру на 2 области.


В этом примере ось X подписана дважды, но это можно сделать и один раз по центру фигуры. Для левой стороны стираем название оси X set xlabel "" и передвигаем подпись правой set xlabel "Energy [eV]" -20,0. В этом случае set bmargin 5 должна быть в нижней области.


up

Сравнивание 2 подобных величин по абсолютным значениям и соотношениям.

Если необходимо сравнить данные, расположенные близко друг к другу, то хорошо если они построены абсолютно и приведено отношение данных. Сравнение абсолютных значений - логарифмическая градация, находящаяся в верхней области, отношение показанно в логарифмическом масштабе нижней области.

Для того чтобы вычислить отношение данных, знначения X этих данных должны быть одинаковыми. В нашем файле данных первый столбец содержит значения X, второй - значения Y первого набораи третий - значения Y второго набора.

Сначало необходимо установить некоторые параметры оси X общие для верхней и нижней фигуры. Диапазон X [0.01:30]. Чтобы ширина этих фигур была такой же, четко определяются края левой и правой сторон.

gnuplot> set xrange [ 0.01 : 30 ]
gnuplot> set nokey
gnuplot> set log x
gnuplot> set xtics 10
gnuplot> set mxtics 10
gnuplot> set lmargin 10
gnuplot> set rmargin 2

Сделаем нижнюю часть отношением данных. Высота снижается до 0.4, диапазон Yот 0.5 до 1.5, и градация от 0.6 до 1.4 с интервалом 0.2. Чтобы назвать пространство оси X, используем set bmarginи прикрепляем к верхней области, set tmargin 0 удаляет пространства, расположенные выше. Значения Y двух наборов данных во втором и третьем столбце файла данных. Построение отношения первых данных со вторыми plot 1:($2/$3). Кроме того, прямая линия Y=1 показывает отношение данных.

gnuplot> set multiplot
multiplot> set yrange [ 0.5 : 1.5 ]
multiplot> set ytic 0.6,0.2,1.4
multiplot> set ylabel "Ratio"
multiplot> set size 1,0.4
multiplot> set xlabel "Energy [eV]"
multiplot> set origin 0.0,0.0
multiplot> set bmargin 3
multiplot> set tmargin 0
multiplot> plot 1 w l 0,"cross.dat" u 1:($2/$3) w l 1

Теперь делаем верхнюю область. Уменьшим размер, переместим начало координат из левого верхнего угла в нижнюю область. 2 набора даных представленны в логарифмической градации. set bmargin 0 удаляет пространства расположенные ниже. Подписи оси X должны быть удалены.

multiplot> set log xy
multiplot> set yrange [ 0.1 : 5000 ]
multiplot> set ytic 0.1,10
multiplot> set ylabel "Cross Section [b]"
multiplot> set size 1,0.6
multiplot> set origin 0.0,0.4
multiplot> set bmargin 0
multiplot> set tmargin 1
multiplot> set format x ""
multiplot> set xlabel ""
multiplot> plot "cross.dat" u 1:2 w l,"" u 1:3 w l
multiplot> set nomultiplot
gnuplot> 
fig/sample5.16c

Т.к. легенда в данном примере была стерта, отношения A к B или B к A понять не легко. Как видно на верхнем рисунке, это отношение красной кривой к зеленой, потому что красная ниже зеленой. Однако отношение должно быть показано в заголовке фигуры.

См. пример EPS в галерее.


up