gnuplot: программа для построения графиков

Программы для построения графиков можно условно разделить на два вида: те, что используют графический интерфейс — как Origin или SciDAVis, и те, что строят графики при помощи команд. К числу последних относится и gnuplot, с которым мы хотим познакомить читателя. Вот уже почти тридцать лет gnuplot строит графики. И только. Но это он умеет делать хорошо.

Мы решили разделить статью на две части: первая — для тех, кто спешит и хочет лишь познакомиться с программой, и вторая — для тех, кто захочет продолжить знакомство. Для описания всех возможностей gnuplot понадобилась бы целая книга (и такие книги существуют, например, эта), поэтому мы попытаемся на нескольких примерах дать представление о том, как работает gnuplot и для чего его можно использовать.

Предположим, что gnuplot уже скачан, установлен и запущен. Все команды набираются в командной строке gnuplot.

Графики двумерных функций строятся командой plot (рис. 1), например:

    plot sin(x)

Укажем диапазон изменения x:

    plot [x=-2*pi:2*pi] sin(x)

Чтобы построить графики нескольких функций, их надо разделить запятыми (рис. 2)

    plot [x=-2*pi:2*pi] sin(x),cos(x)

Рисунок 1

Рисунок 2

Трехмерные графики строятся командой splot (рис. 3):

    set contour            # строить линии уровня
    set hidden3d           # удалять невидимые линии
    set isosamples 100     # установить частоту дискретизации 100 по x и по y
    splot [-pi:pi] [-pi:pi] sin(x*x+y*y)/(x*x+y*y)

Рисунок 3

Команда set устанавливает значение параметров графика. После символа # идет комментарий. Частота дискретизации отвечает за гладкость построения графика — чем она выше, тем более гладким выглядит график. Текущее значение частоты можно узнать командой show:

    show isosamples

Текст примера можно сохранить в файле sample.gp и затем запустить на выполнение командой:

    load ’sample.gp’ # или load ”sample.gp”

Расширение файла не имеет значения.

Если нужен график в виде окрашенной поверхности, в конце строки splot добавим with pm3d:

    splot [-pi:pi] [-pi:pi] sin(x*x+y*y)/(x*x+y*y) with pm3d

Переписывать команду полностью не нужно. Достаточно найти ее с помощью стрелочек «вверх»/«вниз» в истории команд, добавить необходимое и перерисовать (рис. 4):

    replot

 

Рисунок 4

Большинство команд можно заменить сокращениями. Так plot сокращается до p, splot — до sp, а with — w.

Графики по файлам данных также стоятся с помощью plot и splot. Допустим, есть такой файл:

# data.txt

# x y

0  0

0.351506  0.339385

0.703012  0.654529

1.05452  0.94543

1.40602  1.21209

 

Построим по этим данным кривую (рис. 5):

plot "data.txt" with lines  # или: p "data.txt" w l

По умолчанию gnuplot строит только точки и with lines нужен, чтобы соединить точки линией.

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

0.703012  0.654529

получим по графику для каждого из наборов (рис. 6).

Рисунок 5

Рисунок 6

Сохранить график можно, указав формат вывода командой set terminal. Добавим в конце любого из рассмотренных примеров следующее:

    set terminal png           # формат вывода - PNG
    set output "sample.png"    # имя файла вывода
    replot                     # перерисуем график в файл

Помощь по командам gnuplot можно получить, набрав help имя_команды. Галерея примеров находится здесь, а прекрасная работа Тосихико Кавано “Not so FAQ”, где есть ответы на все основные вопросы использования программы — по адресу.

Исходный код примеров.

(Продолжение следует)

Дмитрий Храмов

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя mike

Почитал продолжение. Отличный и полезный материал!

Аватар пользователя dkhramov

Спасибо! Это были две половинки одной статьи, и без второй части первая  выглядела совсем простенько. А так получился миниучебник.