GNUPLOT

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

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

О подписях (№.2)

1 | 2 | 3

Как указать положение и координаты подписей ?

Gnuplot использует 4 координаты, чтобы определить положение произвольных линий, стрелок, текста и легенды. Их называют "первая", "вторая", "графическая" и "экранная". "Первая" координата - это левая ось Y и нижняя ось X. "Вторая" координата - это правая ось Y2 и верхняя ось X2. "Графическая" координата обладает относительной позицией в рамке графика. "Экранная" координата располагается относительно всего экрана(бумаги). "Первая" координата устанавливается по умолчанию. Положение может быть определено с помощью команд: graph x, screen y .

Следующий пример показывает, как написать текст относительно каждой координаты.

gnuplot> set label "(0,0) first"  at first  0, first  0
gnuplot> set label "(0,0) graph"  at graph  0, graph  0
gnuplot> set label "(0,0) screen" at screen 0, screen 0
fig/sample4.4a

Надпись "first" располагается в центре окна с графиком. Координаты графика берут начало в нижнем левом углу. Вершина графика находится в правом верхнем углу и имеет координаты (1,1). Положение графика определяется в соотношении с размерами графика. Например, команда graph 0.5, graph 0.5 всегда является центром в границе графика. Начало "графических" координат - левый нижний угол и (1,1) - это верхний правый угол экрана(бумаги). Эта координата не затронута размерами графика.


Положение надписи определяется "первой" координатой. Надпись будет менять положение, когда будет изменяется диапозон по оси X и Y. Если положение определяется "графической" или "экранной" координатой, по положение не будет изменяться.

gnuplot> set xrange [-10:4]
gnuplot> set yrange [-10:4]
gnuplot> replot
fig/sample4.4b

Давайте переместим весь график вправо вверх. Команда set origin x,y изменит начало координат графика. x и y даны в "экранных" координатах.

gnuplot> set origin 0.2,0.2
gnuplot> replot
fig/sample4.4c

Начало экранных координат всегда находится в левом нижнем углу, а начало графических координат перемещается, когда значение origin изменено.


up

Использование указательных стрелок.

Чтобы что-нибудь объяснить или показать на рисунке, используют указательные стрелки. Gnuplot строит стрелки или линии с помощью команды set arrow. Простой пример: set arrow from 1,2 to 2,4, который позволяет построить стрелку по указанным координатам. Координата указывается, как "первая" координата, если она не задана, поэтому положение зависит от значений по осям X и Y. Чтобы построить стрелки независимо от осей, используйте графические или экранные координаты.

Gnuplot присваивает целые числа каждой стрелке(если они не заданы). Первой будет присвоено "1", второй - "2" и так далее. Эти числа используются для того, чтобы переопределить или удалить стрелку. Синтаксис такой же как и у команды set label.

gnuplot> set arrow from 0,0 to 1,1
gnuplot> set arrow from 0,0 to 1,2
gnuplot> set arrow from 0,0 to 1,3

Первая стрелка (берёт своё начало в (1,1)) становится No.1, следующая No.2. Чтобы удалить No.2 и изменить конечную точку стрелки No.3, дайте команды:

gnuplot> unset arrow 2
gnuplot> set arrow   3 to 1,5

Так же есть возможность самому назначить числа для стрелок: set arrow 1. Стрелки, которые были определены, могут быть подтверждены командой show arrow. Если опция nohead использована, стрелка будет нарисована без наконечника. Вы можете изменить ширину или стиль линии командами lw (linewidth) и ls (linesyle).

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

Сначала определите функцию, график которой хотите построить. Функция y=x**2 и y=1-(1-x)**2 будут использованы в качестве примера. Когда нужно нарисовать стрелку между двумя этими графиками в точке X=0.5, нужно определить значение Y в точке X=0.5. Определим функции:

gnuplot> f(x)=x*x
gnuplot> g(x)=1-(1-x)*(1-x)

Чтобы нарисовать стрелку в точке at X=0.5, эти функции используются для определения стрелки.

gnuplot> set arrow 1 from 0.5,f(0.5) to 0.5,g(0.5)
gnuplot> plot f(x),g(x)
fig/sample4.5

В этом способе координаты вычисляются командой set arrow, поэтому значения не могут быть изменены автоматически, если изменятся функции f(x) и g(x). Если функции будут переопределены, нужно будет также перерисовать стрелку.


(Возможно) Невозможно нарисовать одну стрелку с двуми наконечниками. Но можно нарисовать две противоположно-направленных стрелки:

gnuplot> set arrow 1 from 1,2 to   1,4
gnuplot> set arrow 2 to   1,2 from 1,4
up