2012-05-27 4 views
3

Я пытаюсь поместить две фигуры бок о бок, используя gnuplot с множителем. Я хочу, чтобы результирующее изображение было прямоугольным, поэтому я использую заданный размер 2, 1. Я также установил опцию множественного макета 1, 2. Однако результирующее изображение использует только левую часть доступного пространства. Любая помощь будет оценена. Благодаря Ахметgnuplot: как поставить две фигуры бок о бок

Вот Получившееся изображение http://tinypic.com/r/33mlz04/6

А ниже это GNUPLOT команды я использую.

 
set terminal postscript eps color enhanced 
set output 'figure.eps'; 
set size 2,1; 

set multiplot layout 1, 2 ; 
set title "Figure 1"; 
    plot "data1.txt" 
set title "Figure 1"; 
plot "data2.txt" 
unset multiplot 

Хотя я не очень уверен, с некоторыми проб и ошибок я решил, что

 

    set terminal postscript eps color enhanced 

    set output 'eps/image.eps'; 
    set size 1,0.5; 

    set multiplot layout 1, 2 ; 
    set title "Figure 1"; 
    set size 0.5,0.5; 
    plot "data/data1.txt" 
    set title "Figure 1"; 
    set size 0.5,0.5; 
    plot "data/data2.txt" 
    unset multiplot 

+1

Добро пожаловать в StackOverflow! Что касается стиля, вам не нужны конечные точки с запятой в gnuplot (как и в C) ... пока они не болят, они, как правило, делают скрипт немного менее понятным (IMHO). Кроме того, если вы нашли решение от @andyras полезным, не стесняйтесь повышать или даже отмечать его как принятое решение. – mgilson

ответ

5

Попробуйте что-то вроде:

set terminal postscript eps color enhanced size 10,5 
set output 'figure.eps'; 

set multiplot layout 1, 2 ; 
set title "Figure 1"; 
plot "data1.txt" 
set title "Figure 1"; 
plot "data2.txt" 
unset multiplot 

Когда вы установите размер на терминале строка спецификации, которая определяет фактический размер холста сюжета (в дюймах в этом случае). Когда вы используете set size на отдельной строке, которая задает размер графика в относительных единицах размера холста. В старых версиях gnuplot это отличается. Для лучшего объяснения попробуйте help set size в gnuplot.

+0

Спасибо andyras, хотя то, что вы предложили, не работает, это заставило меня попробовать дальнейшие возможности, и мне удалось решить проблему. Я поставил решение под оригинальный пост. –

+0

Я рад, что вы решили свою проблему. Решение, которое я опубликовал, работает для меня - какую версию gnuplot вы используете? – andyras

+0

Хорошая работа, указывающая разницу между размером «холста» и размером отдельных участков. (+1) – mgilson

3

Для большего контроля над размером и положением участка, вы можете использовать set origin в сочетании с set size, чтобы изменить размещение и размер каждого участка. Наконец, наибольший контроль может быть достигнут с помощью set lmargin at <place>set rmargin ...) и так далее - для tmargin и bmargin, где «lrtb» обозначает левый, правый, верхний и нижний соответственно.

Таким образом, чтобы получить участок, чтобы заполнить все доступное пространство (слева направо), вы можете:

set multiplot 
set lmargin at 0 
set rmargin at .5 
plot sin(x) 
set lmargin at .5 
set rmargin at 1 
plot cos(x) 
unset multiplot 

Однако это (обычно), слишком много. Обычно gnuplot пытается сделать поля достаточно большими для ваших ярлыков и таких, но установка поля явно отключает это. Я предлагаю вам пойти с решением анры.

1

Если у вас возникли проблемы с использованием этого метода для более чем двух цифр, добавьте «установить начало 0,0» после «заданного размера 0,5,0,5». Например, для трех цифр:

set terminal postscript eps color enhanced 

set output 'eps/image.eps'; 
set size 1.5,0.5; 

set multiplot layout 1, 3 ; 
set title "Figure 1"; 
set size 0.5,0.5; 
set origin 0,0 
plot "data/data1.txt" 
set title "Figure 2"; 
set size 0.5,0.5; 
set origin 0,0 
plot "data/data3.txt" 
set title "Figure 3"; 
set size 0.5,0.5; 
set origin 0,0 
plot "data/data3.txt" 
unset multiplot 
Смежные вопросы