В этом посте освещается ряд вопросов об оформлении графиков: управление осями, изменение полей и шрифтов графиков, изменение сетки и прочее.
Как построить график фиксированных размеров или задать поля на графике?
Чтобы задать размер графика, следует поправить размеры полей: верхнего (tmargin), нижнего (bmargin), левого (lmargin) и правого (rmargin). По умолчанию размеры полей вычисляются автоматически, однако лично у меня при этом построенные графики с подписями по осям оказываются немного обрезанными снизу. Это легко исправить, задав нижнее поле больше:
gnuplot> set bmargin 4
Размер графика при этом не изменится - просто график несколько сожмётся внутрь.
Как использовать обе стороны оси Y?
Иногда требуется пометить несколько графиков на один. Используя gnuplot, можно оперировать с осями независимо.
По умолчанию, ось Y2 такая же, как и Y. Для примера сделаем их разными, и построим график sin(x) и квадрат этой функии на одном графике. Синтаксис такой: x1y1, x1y2, x2y1, x2y2. Например, axis x1y2 означает, что эта функция будет масштабирована под нижнюю ось Х и правую ось Y.
gnuplot> set xrange [0:2*pi]
gnuplot> set yrange [-1:1]
gnuplot> set y2range [0:1]
gnuplot> plot sin(x) axis x1y1, \
sin(x)**2 axis x1y2
Пример такого графика:

В данном случае деления на правой оси такие же, как и на левой. Чтобы сделать их разными, следует использовать опцию nomirror, установить set ytics и установить set y2tics для того, чтобы деления осей отличались:
gnuplot> set y2tics 0, 0.2
gnuplot> set ytics nomirror
Пример такого графика:

Как стереть одну из осей?
Gnuplot отрисовывает все четыре оси на графике, но иногда требуется сделать так, чтобы некоторые оси не рисовались. Чтобы удалить ненужные оси, следует использовать команду set border n, где n - целое число. Каждая ось имеет приписанное ей число: нижняя ось = 1, левая = 2, верхняя = 4 и нижняя = 8.
Параметр n есть сумма чисел, приписанных осям, которые будут построены.
Так же следует отключить деления осей, которые вы хотите стереть, используя команды set no{x|y}tics или set {x|y}tics nomirror.
Например, если нужно построить график, на котором удалены верхняяи правая оси, нужно написать:
gnuplot> set border 3
gnuplot> set xtics nomirror
gnuplot> set ytics nomirror
Пример такого графика:

Как построить квадратный график или с фикированным отошением сторон?
Чтобы построить кваратный график, следует передать параметр square команде set size например так:
gnuplot> set size square
Вот пример такого графика:

Точно так же, чтобы зафиксировать соотношение сторон, следует написать:
gnuplot> set size ratio 2
В этом случае ось Y будет в два раза длиннее, чем ось X. Это соотношение не зависит от значений, отложенных по осям X и Y. Пример графика:

Как построить ось, проходщую через 0?
Для этого следует использовать команду set {x|y}zeroaxis. По умолчанию, нулевая ось отрисовывается точками, однако это легко переопределяется командами ls line_style, lt line_type, lw line_width. Например, можно сделать так:
gnuplot> set xzeroaxis lt -1
gnuplot> set yzeroaxis
Пример такого графика ниже:

Как избавиться от длинных засечек погрешностей?
Погрешности откладываются при помощи линий, которые кончаются небольшими засечками - и иногда их нунжно отключить. Это достигается при помощи команды
gnuplot> set bar 0
По умолчанию длина равна 1, и если поставить 0, то они исчезнут. Наоборот, увеличивая это число, можно сделать так, чтобы засечки погрешностей стали больше.
gnuplot> set bar 0
Например:

Следует отметить, что при изменении размера точек длина засечек погрешностей не меняется, так что лучше всего поступать так:
gnuplot> set pointsize 3
gnuplot> set bar 3
Как сделать шрифт на графиках больше?
Если вы используете postscript terminal, то можно просто сделать сам график меньше, и буквы увеличатся пропорционально.
gnuplot> set size 0.3,0.3

Приведённая выше команда уменьшает график на 30%.
Как изменить шрифт в легенде, осях и подписях графика?
По умолчанию гнуплот строит графики шрифтом Helvetica и размером 16 пунктов. Время от времени требуется вставлять графики в документы с другими шрифтами, поэтому в скрипте для строительства графиков лучше всего предусмотреть замену шрифтов. Для примера ниже везде будет выставлен шрифт Courier размером 20 пунктов. Делается это следующим образом.
Для того, что сменить шрифт в подписи осей и легенде, нужно дать команду:
gnuplot> set terminal postscript enhanced "Courier" 20
Кавычки в названии шрифта обязательны, дальше через пробел идёт размер шрифта в пунктах.
Теперь меняем шрифт в заголовке графика, передавая параметр font при задании заголовка
gnuplot> set title "Damping Function" font "Times-Roman,40"
Обратите внимание, что здесь синтаксис иной: в кавычках имя шрифта и через запятую его размер.
Осталось заменить шрифт в подписях к осям - это так же осуществляется передачей параметра font при задании метки оси X и Y:
gnuplot> set xlabel "Exposure value, rel. units" font "Courier,20"
gnuplot> set ylabel "Signal mean value" font "Courier,20"
Всё готово, теперь график будет построен с указанными шрифтами.
Пример такого графика:

Как соединить точки графика гладкими кривыми?
Есть возможность соединять точки сплайнами и кривыми Безье при помощи опции smooth. Ниже на примере показывается разиница между кривыми Безье и сплайнами. Одни и те же данные строятся тремя способами: исходные точки данных, соединение кривыми Безье и соеднение сплайнами.
gnuplot> plot "test.dat" using 1:2 notitle with points, \
"test.dat" using 1:2 smooth csplines \
title "spline" with lines,\
"test.dat" using 1:2 smooth bezier \
title "bezier" with lines
Результат на рисунке:

Опция csplines соединияет все точки гладко. С другой стороны, кривые Безье не интерполируют данные, а только сглаживает данные. Пример применения этой опции выглядит так:
gnuplot> plot "test.dat" using 1:2:3 notitle with yerrorbars, \
"test.dat" using 1:2:3 smooth acsplines \
title "acsplines" with lines,\
"test.dat" using 1:2 smooth bezier \
title "bezier" with lines
Такой код преобразуется в график вида:

Для того, чтобы построить аппроксимационную кривую, следует использовать весовой коэффициент для данных. Если весовые коэффициенты одинаковы для всех данных (вес 1.0), следует дополнить команду построения графика using 1:2:(1.0) .
Как построить сетку для промежуточных делений на графике?
Чтобы сетка строилась и для промежуточных делений, указываем:
gnuplot> set grid xtics ytics mxtics mytics
При этом следует внимательно следить за тем, как гнуплот считает промежуточные деления, и если они автоматически определяются неверно, следует их явно указать, например:
gnuplot> set mxtics 5
gnuplot> set mytics 5
И наоборот, если нужно убрать сетку для промежуточных или основных делений, следует использовать команды set grid noxtics noytics mxtics mytics, хотя такие графики применяются редко.
Как построить сетку в нужных местах графика?
Обычно при построении графиков сетка отрисовывается по главным делениям осей. Если требуется отрисовать сетку в заданных позициях, следует использовать команду set tics, как это показано на примере:
In the following example, three tics are displayed at 0.5, 1.2, and 2.5 by the set xtics command.
gnuplot> set xtics ("0.5" 0.5, "1.2" 1.2, "2.3" 2.3)
gnuplot> set grid
Здесь сетка по оси Х будет отрисована в точках 0.5, 1.2 и 2.3, что можно видеть на примере ниже:

Как отобразить на графике значения экспериментальных точек?
Иногда требуется отобразить значения точек на графике в виде чисел рядом с точками данных. Гнуплот не может отображать значения данных автоматически, зато этого можно добиться, используя мощь UNIX-way. Например, у нас есть файл данных:
0.40 80
3.00 70
3.00 60
6.00 50
9.00 40
12.00 30
13.00 20
5.00 20
8.00 20
Нужно сгенерировать команды меток, которые и будут отображаться. Выглядят они так:
gnuplot> set label "(0.4,80)" at 0.4,80
gnuplot> set label "(3.0,70)" at 3.0,70
Эти линии можно сгенерировать скриптом на Perl:
% perl -ane 'print "set label \"($F[0],$F[1])\" at $F[0],$F[1]\n"' file.dat > label.plt
Теперь загружаем полученные данные в гнуплот и на построенном графике рядом с каждой точкой будет её значение:
gnuplot> load "label.plt"gnuplot> plot 'file.dat' u 1:2 smooth csp with lines ,\
'file.dat' u 1:2 w points
График выглядит так:

читать далее...
а если копируете статью - поставьте ссылку на оригинал!