-не так Часто Задаваемые Вопросы- обновлено 2010/12/26
|
|
FAQ
|
О 2D Plot (No.6)Совместить разными способами 2 фигуры отображающие одни данные.Здесь будет представлена методика выравнивания двух фигур вертикально или горизонтально, что по существу одно и то же, но в по разному выявлятся. Такая фигура может быть необходима в следующих случаях.
Разместить 2 фигуры с разными масштабами.Данные в качестве примера. Эта фигура имет диапазон 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> Необходимо точно сказать что фигуры слева и справа находятся в разных масштабах. для этого помещаем незначительные деления на ось 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 должна быть в нижней области. Сравнивание 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> Т.к. легенда в данном примере была стерта, отношения A к B или B к A понять не легко. Как видно на верхнем рисунке, это отношение красной кривой к зеленой, потому что красная ниже зеленой. Однако отношение должно быть показано в заголовке фигуры. См. пример EPS в галерее. |