Создание графиков в gnuplot метки, оси и подписи

Здесь будет говориться о том, как в gnuplot сделать подписи к осям с греческими буквами, как использовать в легендах надстрочное и подстрочное написание, как ставить стрелки на графиках и прочее.


Как использовать подстрочное / надстрочное написание?
Для этого следует ипользовать расширенный postscript-терминал, указав в скрипте построения графиков:

gnuplot> set terminal postscript enhanced
Надстрочные символы пишутся как X^2, подстрочные Y_3. Если необходимо написать так несколько символов, следует использвать фигурные скобки: Z_{64}. При одновременном надстрочном и подстрочном индексе используйте Z@^2_{64}.

Следующий пример поясняет использование различных вариантов написания, которые могут быть использованы в легенде для функций y=sin**2(x), y=sin**3(x), and y=sqrt(sin(x)).
gnuplot> set terminal postscript eps enhanced
gnuplot> set key spacing 1.3
gnuplot> set xrange [ 0 : pi ]
gnuplot> set yrange [ 0 : 1.5 ]
gnuplot> plot sin(x)**2 ti "sin^2(x)", \
sin(x)**3 ti "sin^3(x)",\
sqrt(sin(x)) ti "sin^{1/2}(x)"




Чтобы надписи не налезали друг на друга в легенде, требуется увеличить межстрочное расстояние. В данном примере оно увеличено на 30% при помощи команды set key spacing 1.3


Как использовать греческие буквы в текстах подписей?
Для этого следует ипользовать расширенный postscript-терминал, указав в скрипте построения графиков:
gnuplot> set terminal postscript enhanced
Греческие символы пишутся в виде {/Symbol a} - это, например, для буквы "альфа". Другие буквы можно найти в таблице:

Буква Символ Буква Символ Буква Символ Буква Символ
A Alpha N Nu a alpha n nu
B Beta O Omicron b beta o omicron
C Chi P Pi c chi p pi
D Delta Q Theta d delta q theta
E Epsilon R Rho e epsilon r rho
F Phi S Sigma f phi s sigma
G Gamma T Tau g gamma t tau
H Eta U Upsilon h eta u upsilon
I iota W Omega i iota w omega
K Kappa X Xi k kappa x xi
L Lambda Y Psi l lambda y psi
M Mu Z Zeta m mu z zeta

Так же можно использовать различные postscript-символы в их восьмеричном коде, например {/243} это символ фунта-стерлинга.
Следующий пример иллюстрирует построение линейной функции y=Alpha x+ Gamma при использовании двух греческих букв.

gnuplot> set terminal postscript eps enhanced
gnuplot> set xrange [ 0 : 5 ]
gnuplot> set label "{/Symbol a}=0.5, {/Symbol g}=0.2" at 2,0
gnuplot> plot 0.5*x-0.2 ti "y={/Symbol a}x-{/Symbol g}"






Как использовать в текстах подписей другие символы (проценты, копирайты)?
Выше уже говорилось о том, что можно использовать специальные postscript-символы, и это совсем не трудно. Для этого следует установить пакет gnuplot-doc и после этого обратиться к файлу ps_guide.ps - там перечислены все коды символов PostScript. Чтобы на одной из осей, к примеру, поставить знак процента в подписи, следует использовать команду:

gnuplot> set xlabel "Halftones, {/Symbol \\045} of grey"
То есть в подписи по оси X будет стоять: Halftones, 45% of grey


Как изменить расстояние между осями и подписью к ним?
Интервал можно изменить при помощи команд set {x|y}label
Например, это:

gnuplot> set xlabel "x" 0.0,1.0
смещает ось Х на высоту одной буквы вверх. Если задать положительное смещение по Y, подпись оси X налезает на содержимое графика, как показано на рисунках ниже.



Y offset = 0




Y offset = +5



Y offset = -5

если смещение по Y отрицательное, расстояние между подписью оси X и графиком становится больше.

Gnuplot пытается нарисовать график таким большим, насколько это возможно, так что высота графика становится больше, когда подпись оси Х смещается вверх. И наоборот, график становится меньше, когда подпись к оси Х смещается вниз.

10 комментариев: |высказаться!| RSS-лента дискуссии.|
jetxee комментирует...

Михаил, я тебя хотел спросить, ты с терминалами pstricks, metapost или pslatex не игрался?

Всё таки postscript enhanced выглядит не так красиво, как текст отрендеренный \LaTeX. А pstricks, metapost и pslatex надписи средствами LaTeX всё таки рисуют.

У меня никак не дойдут руки с ними разобраться, но мне кажется, результат будет гораздо симпатичнее.

Ещё из экспериментов с терминалами gnuplot, которые хочу попробовать — , который использует PGF/TikZ для отрисовки. Всё таки самый лучший (ИМХО) рисовальный пакет для LaTeX, с поддержкой прозрачности, цветов, PS и PDF.

Если есть какой-то опыт с этими терминалами — дай знать :)

virens комментирует...

2 jetxee пишет...
Михаил, я тебя хотел спросить, ты с терминалами pstricks, metapost или pslatex не игрался?
Некоторое время игрался, но как-то результаты меня не впечатлили и я это бросил. Особой разницы не заметил.

Всё таки postscript enhanced выглядит не так красиво, как текст отрендеренный \LaTeX.
Я не большой эстет в таких делах, потому как журналы устраивает и простой вывод гнуплота. Меня тем более :-)

А pstricks, metapost и pslatex надписи средствами LaTeX всё таки рисуют.
Метапост мне пока не нужен, у меня нет таких навороченных рисунков, где мне не хватило бы Inkscape. Но попробовать можно.


из экспериментов с терминалами gnuplot, которые хочу попробовать — , который использует PGF/TikZ для отрисовки. Всё таки самый лучший (ИМХО) рисовальный пакет для LaTeX, с поддержкой прозрачности, цветов, PS и PDF.
За цветные графики журналы просят немалых денег, да и мне по работе этого в общем не требуется.

Но попробую другие терминалы. Тем более я тут на неделю уезжаю в отпуск - будет время :-)

Если есть какой-то опыт с этими терминалами — дай знать
Непременно.

can3p комментирует...

Спасибо, за очень интересную серию статей. Скажите, а как конвертируете в изображения? Скажем png. Я пробовал делать вывод png, но получается график очень плохого качества. Пробовал ps-файл перегонять через gs, та же фигня. Спас только gsview

jetxee комментирует...

Спасибо за ответы!

У меня если руки дойдут с чем-то из этих терминалов разобраться, в свой блог отпишу.

2can3p:

Я обычно с помощью Imagemagick (convert) конвертирую изображения. Примерно так:

convert -density 300 myplot.eps -resize 1024 myplot.png

Хитрость в том, что вначале я задаю
разрешение (-density 300 означает, что следущий за этой опцией EPS файл растеризуется с разрешением 300 точек на дюйм), а уже затем масштабирую к нужному мне растровому разрешению (-resize 1024 — 1024 пикселей по самой длинной стороне).

Irina комментирует...

Помогите, пожалуйста. Я хочу печатать греческие букв, с индексами и русские буквы. Работаю в windows. Делаю так, как говорится в статье, но получаю один и тот же результат. Все руководства на английском, поэтому недопонимаю некоторых вещей. В инструкции по установке прописано, что надо как-то интегрировать программу, чтобы она различала шрифты (если я правильно поняла), не не совсем понимаю, как это сделать.
Вот текс ошибки, которая выдается
gnuplot> set term postscript enhanced
Terminal type set to 'postscript'
Options are 'eps enhanced defaultplex \
leveldefault monochrome colortext \
dashed dashlength 1.0 linewidth 1.0 butt \
palfuncparam 2000,0.003 \
"Helvetica" 14 '
Буду очень признательна, если Вы поможете разобраться с этой проблемой.

virens комментирует...

2 Irina комментирует...

Помогите, пожалуйста. Я хочу печатать греческие букв, с индексами и русские буквы. Работаю в windows.За Windows я, к сожалению, не в ответе - мне даже проверить негде.

В инструкции по установке прописано, что надо как-то интегрировать программу, чтобы она различала шрифты (если я правильно поняла)Если я всё правильно понял, то нужно явно указывать шрифты. Я, кстати, сам на этом деле погорел однажды: повставлял всюду Гельветику, а под виндой русские символы не отображаются. Если это то, о чём вы пишете, попробуйте сделать так:

Шапка:

set terminal postscript 'NimbusSanL-Regu' eps enhanced solid

и в осях тоже:

set xlabel "Параметр регуляризации, {/Symbol a} = 10^n" font "NimbusSanL-Regu,18"

Это внедрит шрифт NimbusSanL-Regu в график. Естественно, он у вас должен быть.


Вот текс ошибки, которая выдается
gnuplot> set term postscript enhanced
Terminal type set to 'postscript'
Options are 'eps enhanced defaultplex \
leveldefault monochrome colortext \
dashed dashlength 1.0 linewidth 1.0 butt \
palfuncparam 2000,0.003 \
"Helvetica" 14 '
Я не вижу ни текста гнуплотовского графика, ни исходных данных. Лучше их выложить или прислать мне на почту mydebianblog собака джимейл точка ком.

Irina комментирует...

Спасибо большое за ответ! Но, к сожалению, так и не рисует гнуплот у меня графики с греческим буквами в подписях к осям. С русскими буквами относительно лучше дело обстоит:
set encoding koi8r
только один глюк: когда нажимаю на клавишу с буквой "я", gnuplot закрывается моментально.
Про шрфты я уже на одном из сайтов читала, меняла, но для подстрочных символов и греческих букв это не изменило ситуацию.
После ввода
set terminal postscript 'NimbusSanL-Regu' eps enhanced solid
выдает все ту же ошибку
gnuplot> set terminal postscript 'NimbusSanL-Regu' eps enhanced solid
%%Trailer
%%DocumentFonts: Symbol NimbusSanL-Regu
Terminal type set to 'postscript'
Options are 'eps enhanced defaultplex \
leveldefault monochrome colortext \
solid dashlength 1.0 linewidth 1.0 butt \
palfuncparam 2000,0.003 \
"NimbusSanL-Regu" 14 '
сами графики я из текстовых файлов строю, ничего особенного, к примеру
'data4.dat'
3 5
3.2 5
3.4 4
3.6 4
3.8 4
4.0 3
4.2 3
4.4 3
4.6 3
4.8 3
5 2
5.2 2
5.4 2
5.6 1
plot 'data4.dat' using 1:2 smooth csplines notitle w l lt 2 lw 1

Сам гнуплот ругается после слов postscript и enhanced.

Начинаю думать, что у меня с системой какие-то проблемы...А переустанавливать сейчас не хотелось бы.

cramur комментирует...

синтаксис команды перемещения положения подписи сейчас вроде немного другой - у меня set xlabel offset x,y

Анонимный комментирует...

а как в gnuplot задать толщину осей?

Анонимный комментирует...

невозможно напечатать в командной строке гнуплота русских букв. Они просто не печатаются.
Как это исправить?

Отправить комментарий

Подписаться на RSS-ленту комментариев к этому посту.