20 июля 2009 г.

Построение графиков с помощью PyXPlot

Утилит, позволяющих построить на компьютере график какой-то функции, превеликое множество. Но не каждая способна создать график в достойном качестве, и с соответствующим оформлением. Многие из них интерактивны, но часто это мешает, когда нужно менять много параметров графика. Поэтому при активной работе с графиками часто применяются командные «графопостроители» — фактически маленькие языки программирования.

Среди программ таких можно отметить, например, asymptote, популярный gnuplot, metapost и другие. Достойное место в этом ряду занимает PyXPlot (её команды, кстати, во многом совпадают с командами gnuplot, так что изучив одну из этих программ, легко разобраться в другой). Отличительными особенностями программы являются простота и высокое качество результата. Ей и посвящен этот обзор.

Запуск программы
PyXPlot есть в дистрибутиве Ubuntu и Debian, так что установка должна пройти без проблем. В крайнем случае, всегда можно скачать программу с родного сайта.

Сразу нужно отметить, что PyXPlot — программа чисто консольная. Работать с ней можно как интерактивно, вводя команду за командой, так и в скриптовом режиме. В последнем случае команды записываются в отдельный файл, который затем «скармливается» PyXPlot.

Запускается PyXPlot как обычно:
pyxplot СКРИПТЫ

Если вместо списка файлов поставить дефис, то программа будет читать команды со стандартного ввода, что очень удобно при автоматизации. Например, так можно нарисовать синусоиду:
echo 'plot sin(x)' | pyxplot -

Простейшие операции
Главная команда для рисования графиков — plot. Она позволяет не только рисовать графики функции, но и строить «по точкам» графики данных, записанных в файл.

Чтобы построить данные из файла, нужно просто указать его имя в апострофах или двойных кавычках после команды plot. Данные в файле должны быть обычным текстом с одним или несколькими столбцами чисел, разделенных пробелами или запятыми. Если имя заканчивается на «.gz», он будет автоматически распакован перед построением.
plot 'data.gz'
Так как в файле указаны отдельные значения, то и отображаются они по отдельности, маркерами.

По умолчанию результаты сохраняются в файл «pyxplot.eps».

Построения графика функции полностью аналогична. Нужно просто записать её после команды plot. В качестве аргумента нужно использовать x.
plot sin(x)/x
Можно построить сразу несколько графиков в одной системе координат, просто перечислив функции (или имена файлов) через запятую.
plot sin(x)/x, sin(x)
Переменные и функции
В теле файла с командами можно объявить переменные и пользовательские функции при помощи операции «=». Всё достаточно интуитивно:
a = 2
b = 3
plot sqrt(a*pow(x,2) + b)
В PyXPlot встроены самые распространенные математические функции, такие как: sin, cos, tan, exp, min, log, acos, asin, atan, sqrt, pow и т. д.
f(x) = sqrt(x)*sin(x)
plot f(x)
Настройки графика
При помощи команды set можно задать дополнительные параметры графика, такие как подписи осей (x label и ylabel) и заголовок графика (title). В подписях можно использовать формат формулы в формате TeX (их нужно обязательно заключить в знаки «$»). Использование TeX делает график намного симпатичнее и презентабельнее.

Пример:
set xlabel '$x$'
set ylabel '$y$'
set title 'Plot of $\sin(x)\over x$'
plot sin(x)/x
Можно также задать имя выходного файла (set output) и формат выходных данных (set terminal). Поддерживаются распространённые форматы: postscript, pdf, png, jpeg.

Пример:
set terminal png
set output 'plot.png'
plot cos(x)*exp(x)
Работа с файлами данных
Данные в файле можно использовать как независимые координаты при построении. Для этого нужно добавить парметр using к команде plot.

Например, команда
plot 'data.gz' using 1:2
строит график, используя первый столбец как координату x точек, а второй — как координату y.

Стили графика
Стиль построения графика настраивается при помощи параметра with.

Команда
plot 'data.gz' with points
строит точечный график, а команда
plot 'data.gz' with lines
соединяет точки отрезками.

Можно также откладывать ошибку на графике (with yerrorbars), но для этого потребуется третий столбец.

Тип маркеров и линий также настраивается при помощи модификаторов pointtype и linetype. Подробности — в документации.
plot sin(x) with lines linetype 3
Диапазоны по осям
При построении можно указать размеры осей. Для этого нужно указать минимально и максимальное значения по каждой из осей в квадратных скобках через двоеточие. Если нужно указать параметры только для одной оси, то для другой просто записсывается «[:]» без чисел. Пример:
plot [-1:1][-1:1] sin(x)
Заключение
Разумеется, возможности программы не исчерпываются только перечисленными командами. Утилита имеет ещё очень много разных возможностей: от аппроксимации данных из файла до построения графиков векторных полей.


Комментариев нет:

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