GNUPLOT

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

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

О делениях

Как можно изменить внешний вид делений на каждой оси ?

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

set {x|y}tics команда для изменения основных делений.

gnuplot> set xtics 2
gnuplot> set ytics 0,200
gnuplot> plot x**3
fig/sample3.1a

Приращение показывается только для оси X, при этому значения под делениями могут становится -10, -8, ... +10. Для оси Y начальные значения и приращение заданы сразу. Gnuplot устанавливает значения под делениями: 0, 200, 400... В этом случае нет деления на оси Y, значение которой отрицательно. Вы также можете установиться последнее значение на ваше усмотрение командой: set ytics 0,200,600.


Второстепенные деления могут быть изменены с помощью команды set m{x|y}tics. Интервал между каждым основным делением поделены на это значение. Следующий пример показывает, как нарисовать промежуточные деления.

gnuplot> set mxtics 2   
gnuplot> set mytics 2 
fig/sample3.1b

Существует возможность произвольного расположения текста под делениями независимо от чисел. Вы можете написать "April", "May", "June" и "July" под X=1,2,3 и 4 следующим образом.

gnuplot> set xtics ("April" 1, "May" 2, "June" 3, "July" 4)
gnuplot> plot "test.dat" using 1:2:3 notitle with boxes,\
              "test.dat" using 1:2   notitle with lines
fig/sample3.1c

Как мы видим второстепенные деления не изменяются, когда к основным применены такие команды.


Команда set ticscale n m меняет размер делений. Величина основных делений умножается на значение n, пока величина второстепенных делений умножается на значение m. Если m не указан, то второстепенные делений будут вполовину меньше основных. Если задать set ticscale 1 1, то все деления будут одинакового размера.

Обычно деления обращены внутрь, чтобы нарисовать их, обращёнными наружу, используйте set tics out.

up

Я хочу использовать вместо десятичных делений экспоненциальные как в логарифмической шкале.

По умолчанию формат обозначения подписей под под делениями "%g". В логарифмической шкале подписи отображаются в формате "F", например 0.01, 1000 и так далее, если диапозон больше 0.0001 и меньше 100000. Если числа не входят в этот диапозон, то формат изменится на "E", в котором числа отображаются как 1e-05, 1e+06 и т.д.

Чтобы выразить числа с основанием 10, нужно изменить формат на "10^{%L}" командой set format. "%L" позволяет отображать степени чисел по основанию 10. Терминал X window не отображает верхние индексы, поэтому нужно использовать терминал postscript.

gnuplot> set format y "10^{%L}"
gnuplot> set terminal postscript eps enhanced 
gnuplot> set ylabel "Y-AXIS" 2,0  
fig/sample3.2 Когда установлен данный формат, расстояние между осью Y и её подписями становится шире. Вы можете установить смещение опцией команды set ylabel. В этом случае подпись оси Y будет перемещена в право на 2 единицы.
up

Как изменить формат чисел ?

Формат подписей под делениями может быть изменён командой set format. Синтаксис команды следующий: set format + имя оси (X, Y, Z, XY, X2, Y2) + формат строки. Эта строка схожа с форматом строки на языке С. В следующем примере говорится о том, как gnuplot отображает подписи делений из 10 символов с тремя цифрами после запятой.

gnuplot> set format x "%10.3f"

Синтаксис для цифр: "%" + (количество символов).(число знаков после запятой). Число с плавающей точкой 6.2 показывает, что количество символов 6, а после запятой 2 знака, потому будет отображено "5.00". Можно не указывать количество символов или число знаков после запятой, например, 6 или .2

Формат отображения выражается одной буквой -- 'f', 'e', 'E', 'g', 'x', 'X', 'o', 't', 'l', 's', 'T', 'L', 'S', 'c' и 'P'. По умолчанию установлено "%g". Когда подписи делений могут быть отображены с указанными количеством символов и числом знаков после запятой, то они будут переведены в формат "%.0f", в противном случае будет использован формат "%e". Следующая таблица показывает различия между форматами 'f', 'e', 'x' и 'o'. Форматы 'e' и 'E' похожи, кроме того как отображается текст 'e' или 'E'. Формат "%O", почему-то не работает (баг?)

Формат Вид Пример (underscore means blank)
f десятичный %6.3f __6.00
e,E экспоненциальный %11.4e _5.0000e+01
x,X шестнадцатеричный %x fffffffb
o,O восьмеричный %o 37777766

Форматы 't', 'l', 'T' и 'L' служат для построения по логарифмической шкале. Давайте построим функцию y=exp(-x)+exp(x) в диапозоне X [-10:10]. Сначала функция будет показана не по логарифмической шкале. Чтобы сравнить эти форматы, отобразим подписи делений во всех 3х форматах сразу.

gnuplot> set format y "%T %t %g"
gnuplot> plot exp(-x)+exp(x)
fig/sample3.3a

Вы можете указать разные форматы и отобразить их одновременно, как в этом примере, где указаны 3 числа в одной строке по оси Y. Первое в формате "%T", второе - "%t" и третье - "%g". Видно, что "%t" отображает дробную часть чисел по основанию 10 и "%T" отображает степень чисел по основанию 10. Поэтому числа в формате "%g" - это A x 10^B, где A взято из "%t", а B из "%T".


Теперь построим график в логарифмической шкале:

gnuplot> set logscale y
gnuplot> replot
fig/sample3.3b

Числа представленные в формате "%t" стали единицами, а "%T" - логарифмические значения по оси Y. Поэтому set format "%T" отображает степень чисел по основанию 10 по оси Y. Если терминал позволяет отобразить верхние индексы, как терминал Postscript, формат "10^{%T}" даст экспоненциальные выражения.


Обычно 't' и 'l', 'T' и 'L' дают одинаковые результаты в обычной логарифмической шкале. Форматы 't' и 'T' отображают десятичную часть и степень чисел по основанию 10, а 'l' и 'L' отображают лююое основание, которое может быть задано командой set logscale axis base.

Вы можете использовать различные символы и текст в подписях под делениями. Например, если указать: set format x "%g km" , то вы получите значения в формате 'g' и единицы измерения "km".

up

Как убрать числа ?

Примените команду:

gnuplot> set format x ""
up

Я хочу сделать промежуточные значения в логарифмических делениях.

from Chriss in Univ. Tuebingen. Thanks !

Обычно логарифмические деления появляются, когда есть степени чисел 10,(1,10,100...). Иногда проще понять график, если используются соответствующие деления, и расстояние между ними не очень большое. Gnuplot прописывает значения только под основными делениями, заданными командой set {x|y}tic, поэтому, нужно определить, где вы хотите подписать значения.

gnuplot> set logscale y
gnuplot> set yrange [1:50]
gnuplot> set ytics (1,2,5,10,20,50)
gnuplot> set format y "%2.0t{/Symbol \327}10^{%L}"
gnuplot> set lmargin 8
gnuplot> set terminal postscript eps enhanced
gnuplot> plot exp(x)/x
fig/sample3.5

Символ Postscript, заданный в команде set format, обозначает точку, расположенную между символами немного выше линии строки. Чтобы изменить её на "крестик", замените в той строке: {/Symbol \264}.

Описанный здесь способ не работает на некоторых ОС. Например, когда к числу 50.0 применены форматы "%t" и "%L", одни системы дают значения 5.0 и 1 (то есть 50.0 = 5.0E+01) и это верное отображение. Но другие системы дают значения 0.5 и 2 (50.0 = 0.5E+02). В этом случае значения для графика по осям принимают вид 0x10^2. (ноль логарифма ???)

up