Gnuplot. Строим много графиков

Linux

Задача

Есть данные, разложенные по разным файлам, для каждого из которых надо сделать картинку с графиком.
Файлов множество + возможно их неоднократное изменение и, следовательно, перепостроение графиков.

В примере данные и картинки лежат соответственно в поддиректориях dat и img текущей директории.
Пусть есть файлы следующего содержания:


0.0    0.0
1.0    1.0
2.0    2.0
...
etc.

Решение

Пара скриптов — один для оболочки (bash), другой для самого gnuplot'а.

plot.sh


for file in `ls ./dat/`
do
  gnuplot -e "out_file='img/${file}.png'; in_file='dat/${file}'" t_x.gpl 
done

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

for file in `ls ./dat/`

Цикл по всем именам файлов с данными.

gnuplot -e "out_file='img/${file}.png'; in_file='dat/${file}'" t_x.gpl

Запускаем gnuplot для каждого файла, также скармливая ему каждый раз скрипт t_x.gpl (см. ниже).
Опция говорит gnuplot'у, что перед исполнением каждого файла (в нашем случае файл всегда один и тот же — t_x.gpl) надо выполнить указанные команды:

out_file='img/${file}.png'; in_file='dat/${file}'

которые устанавливают переменные для gnuplot'а out_file и in_file — соответственно имя будущей картинки и имя файла с данными.

t_x.gpl


set terminal pngcairo enhanced mono solid lw 1 size 1024, 640
set encoding utf8
set xlabel "подпись оси oX"
set ylabel "подпись оси oY"
set xrange [0:100]
set yrange [0:100]
set output out_file
plot in_file using 1:2 with lines linestyle 1 title "название"

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

set terminal pngcairo enhanced mono solid lw 1 size 1024, 640

set terminal pngcairo — устанавливаем режим вывода png-файл (с помощью движка cairo);
enhanced — поддержка расширенных текстовых возможностей (см. встроенный help);
mono — цвета только черный и белый;
solid — использовать сплошные линии;
lw 1 — толщина линии (от linewidth);
size 1024, 640 — размер получаемой картинки в пикселах. Также возможно использование других единиц измерения (см. встроенный help).

set encoding utf8

Устанавливаем кодировку UTF-8 (нужна версия >= 4.4).


set xlabel "подпись оси oX"
set ylabel "подпись оси oY"

Устанавливаем подписи осей.


set xrange [0:100]
set yrange [0:100]

Устанавливаем диапазон значений x и y

set output out_file

В качестве имени выходного файла используем значение переменной out_file, установленное ранее.

plot in_file using 1:2 with lines linestyle 1 title "название"

plot in_file — будем рисовать график, используя данные из файла, имя которого хранится в переменной in_file;
using 1:2 — номера используемых столбцов из файла с данными;
with lines — точки будут соединяться отрезками;
linestyle 1 — стиль отрезков;
title — название графика, отображаемое в легенде.

Полезные ссылки

1. http://www.gnuplot.info/. Домашная страница.
2. http://ru.wikipedia.org/wiki/Gnuplot. Статья на русской википедии.
3. http://mydebianblog.blogspot.com/search/label/гнуплот. Блог Михаила Конника «Записки дебианщика».
4. http://wiki.linuxformat.ru/index.php/LXF71:Gnuplot. Статья из журнала «LinuxFormat».

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.