\chapter{Графики и диаграммы}
\label{sec:graph-diag}

\begin{flushright}
  Даже жизнь можно отобразить \\
  в виде графика функции от времени.
\end{flushright}


Отображение данных на бумаге всегда было и останется не тривиальным
процессом. Не смотря на то, что получение данных, как правило,
занимает гораздо больше ресурсов, задача оформления графиков достойна
автоматизации. Автоматизация, в частности позволяет, поняв как можно
представить данные наилучшим образом, в дальнейшем не снижать уровень
оформления.

По хорошему графики следует создавать в специализированных
приложениях.  Автоматизация этого процесса достаточно специфична,
чтобы реализовывать его с помощью программ не предназначенных только
для этого. Если Вам нужны двумерные графики, то никто не справится с
этим лучше чем \texttt{gnuplot}. Если вас интересуют гистограммы, то
это работа для пакетов анализа \texttt{paw/cernlib} или \texttt{root}.
Но, если Вам хочется разукрасить график, то \mpost{} будет для этого
очень кстати.

\begin{figure}[htbp]
  \centering
  \includegraphics[width=0.4\textwidth]{graphics.1.eps}
  \caption{График, созданный в ручную}
  \label{fig:graph:handmade}
\end{figure}

  Ничего не мешает нарисовать график самостоятельно. Всё что для этого
надо:
\begin{itemize}
\item знать диапазон функции и её аргумента,
\item нарисовать оси координат,
\item сделать решётку и поставить метки на осях,
\item изобразить функцию.
\end{itemize}

В этом смысле кодирование графика ничем не отличается от кодирования
рисунка "--- всё что надо уметь это рисовать стрелки и линии.  Однако,
это годится только для простых графиков.

\section{Графики в \mpost}
\label{sec:graphics}

Для серьёзной работы с графиками в \mpost{} есть довольно продвинутый
пакет \texttt{graph.mp}. Этот пакет написан <<отцом>> \mpost{} Джоном
Хобби и к нему прилагается подробная документация, которую можно найти
в стандартной поставке \LaTeX{} в виде файла \texttt{mpgraph.pdf}.
Если Вы планируете воспользоваться этим пакетом, то прежде изучите
этот текст.

\begin{figure}[htbp]
  \centering
  \includegraphics[width=\textwidth]{graphics.2.eps}  
  \caption{Иллюстрация для объяснения понятия дифференцирования}
  \label{fig:graph:diff}
\end{figure}

\begin{lstlisting}
% Файл graphics.mp
input graph;
% График переменной скорости - тема "дифференцирование"
beginfig(2) ;
  numeric u;
  u = 0.6mm;
  % начало графика
  draw begingraph(12cm,3cm);
    path r;
    numeric e,pi,A,sigma,n,scale,mean,y[],x[];
    e:=2.718;pi:=3.14159;A=50;
    sigma=1.4;n:=100;scale=10;mean=5;
    % создание функции - она использовалась не один раз
    for j:=0 upto n:
      if (j=0):
	x[0]=0;y[0]=0;
      else:
	x[j]:=scale*j/n;
	y[j]:=y[j-1]+A*(e**(-(((scale*j/n-mean)/
        (1.41*sigma))**2)))*
	(x[j]-x[j-1])/(sqrt(2*pi)*sigma);
      fi
    endfor;
    % здесь нужна функция из отрезков, поэтому step 6
    r:=(0,0)for j:=0 step 6 until  (n-1): 
       --((2,0)+(x[j],y[j])) endfor ..(12,50)--(15,50);
    % отрисовка функции
    gdraw r withpen pencircle scaled 0.8u;
    % сетка
    autogrid(grid.bot,grid.lft) withcolor .5white;
    % дополнительные метки на оси абсцисс 
    otick.bot(btex 2\,\text{с} etex,2);
    otick.bot(btex 12\,\text{с} etex,12);
    % текст и стрелка за пределами графика
    gdrawdblarrow (2,-20)--(12,-20) 
                         withpen pencircle scaled 0.5u;
    glabel.top(btex \(T=10\,\text{с}\) etex,(7.5,-20));
    gdrawdblarrow (13.5,0)--(13.5,50) 
                         withpen pencircle scaled 0.5u;
    % текстовые метки внутри графика
    glabel.lft(btex \(S=50\,\text{м}\) etex 
                   rotated 90, 1/2[(13.5,0),(13.5,50)]);
    glabel.rt(btex \(v(t)=\frac{dx(t)}{dt}\) etex 
                                     scaled 1.3,(0,25));    
    glabel(btex \(dx\) etex,(11.1,20)) ;
    glabel(btex \(dt\) etex,(10,9)) ;
    % подписи к осям
    glabel.rt(btex Время (с) etex,(13,-20)) ;
    glabel.lft(btex Расстояние (м) etex 
                    rotated 90,OUT) shifted (0cm,0.5cm);
  endgraph;
endfig ;
\end{lstlisting}
В \texttt{graph.mp} определено специальное окружение. Между
\texttt{begingraph} и \texttt{endgraph} действует своя система
координат. Эта система координат привязана ни к геометрическим
размерам картинки, а к диапазону осей графика. То есть точка (0,0)
соответствует точке пересечения оси абсцисс и оси ординат графика.
Размер создаваемого графика указывается сразу после
\texttt{begingraph}.

Вместо стандартных команд \texttt{draw}, \texttt{fill}, \texttt{label}
и \texttt{dotlabel} используются \texttt{gdraw}, \texttt{gfill},
\texttt{glabel} и \texttt{gdotlabel}, соответственно. Новые команды
работают с учётом координат графика. С помощью них можно построить
функцию именно по точкам, не заботясь о сдвигах и тому подобное. Для
подписи осей существует специальная точка \texttt{OUT}, которая в
зависимости от суффикса команды \texttt{glabel} выносит текст за
пределы основной сетки.

Функция отрисовывается точно так же как любая из кривых: создаётся
путь и выводится с помощью команды \texttt{gdraw}.


Для фиксации диапазона графика используется команда:
\begin{lstlisting}
setrange("нижний левый угол","верхний правый угол");
\end{lstlisting}
При вызове этой инструкции все последующие функции работают в
указанном диапазоне. Таким образом, используя одно и то же
пространство можно совместить несколько графиков, имеющих различный
диапазон аргументов и функций. Шкалу графика можно сделать
логарифмической с помощью инструкции \texttt{setcoord}:
\begin{lstlisting}
% x- линейная шкала, y - логарифмическая
setcoord(linear,log);
\end{lstlisting}
Для создания решётки и меток используется команда \texttt{autogrid}
\begin{lstlisting}
% решётка по нижней и левой осям
autogrid(grid.bot,grid.lft) withcolor .5white;
% внешние метки по нижней оси и внутренние метки по правой оси
autogrid(otick.bot,itick.rt);
\end{lstlisting}


\section{Работа с файлами данных}
\label{sec:graph:data}

\begin{figure}[htbp]
  \centering
  \includegraphics[width=0.7\textwidth]{graphics.4.eps}
  \caption{Число постов на LOR }
  \label{fig:post-lor}
\end{figure}


С помощью команды \texttt{gdraw} можно читать данные из файла. Если в
качестве аргумента передаётся текстовая строка, то \texttt{gdraw}
предполагает, что это имя файла.
\begin{lstlisting}
% Файл graphics.mp
% Число постов на LOR от месяца года
beginfig(4) ;
  u := 0.4mm;
  draw begingraph(150u,100u);
    pickup pencircle scaled 0.2u;
    gdraw("lor-1998.dat") plot btex \(\circ\) etex;
    gdraw("lor-1999.dat") plot btex \(\circ\) etex;
    gdraw("lor-2000.dat");
    gdraw("lor-2001.dat");
    gdraw("lor-2002.dat");
    gdraw("lor-2003.dat") plot btex \(\bullet\) etex;
    gdraw("lor-2004.dat");
    gdraw("lor-2005.dat");
    gdraw("lor-2006.dat");
    gdraw (0,100)--(12,100) withpen pencircle scaled 1u
    dashed evenly scaled 1u withcolor blue;
    glabel.top(btex 2000--2002 etex,(9,100)) withcolor blue;    
    gdraw (0,200)--(12,200) withpen pencircle scaled 1u
    dashed evenly scaled 1u withcolor red;
    glabel.top(btex 2004--2006 etex,(9,200)) withcolor red;
    glabel.lft(btex число <<постов>> etex rotated 90,OUT);
    glabel.bot(btex номер месяца в году etex,OUT);
  endgraph;
endfig;
\end{lstlisting}
\texttt{gdraw} так же как и команда \texttt{draw} <<понимает>>
инструкции \texttt{withpen} (какое перо использовать),
\texttt{withcolor} (цвет линии) и \texttt{dashed} (использовать
пунктир). Дополнительно \texttt{gdraw} воспринимает команду
\mbox{\texttt{plot \{picture\}}}. Указанная в инструкции \texttt{plot}
картинка выбирается в качестве маркера. На рисунке чёрными маркерами
отмечен 2003 год "--- год, когда произошло удвоение новостных постов в
месяц на LOR  (\url{http://www.linux.org.ru}), а белыми маркерами
"--- первый год существования этого ресурса.

По умолчанию предполагается, что входной файл представляет из себя два
столбца цифр, разделённые пробелами. Пример файла
\texttt{lor-2006.dat}:
\begin{lstlisting}[language=Clean]
1 175
2 181
3 184
\end{lstlisting}
Данные взяты с сайта LOR.

Если данные имеют более сложное представление, чем в упомянутом выше
файле, то используется команда \texttt{gdata}.
\begin{lstlisting}
gdata("имя файла",переменная куда считываются данные,действие);
\end{lstlisting}

\begin{figure}[tbp]
  \centering
  \includegraphics[width=0.7\textwidth]{graphics.5.eps}
  \caption{Дефект массы химических элементов от порядкового номера в
    периодической таблице Меделеева. Приведены элементы от водорода до железа. }
  \label{fig:graph:chem}
\end{figure}

Если на текстовый файл вида:
\begin{lstlisting}[language=Clean]
1 7.289 H
2 2.425 He
--вырезано--
26 -57.710 Mn
27 -60.604 Fe
\end{lstlisting}
воздействовать с помощью следующего кода:
\begin{lstlisting}
% Файл graphics.mp
% дефект масс
beginfig(5) ;
  u := 0.8mm;
  draw begingraph(150u,100u);
    gdraw "mendeleev.dat"  dashed evenly scaled 1u 
                                        withcolor 0.5white ;
    gdata("mendeleev.dat", s,
      glabel(s3,(scantokens s1,scantokens s2));
      )
    glabel.lft(btex Дефект массы (МэВ) etex rotated 90,OUT);
    glabel.bot(btex Порядковый номер элемента в таблице etex,OUT);
  endgraph;
endfig;
\end{lstlisting}
то получится простенькая картинка (см.~рис.~\ref{fig:graph:chem}).

Переменная \texttt{s} объявляется массивом в который считывается
строка. В качестве разделителя выступает пробел. Запись \texttt{s1}
соответствует \texttt{s[1]} "--- первому элементу массива. Макрос
\texttt{scantokens} <<встраивает>> значение аргумента в код. В данном
случае происходит перевод строки в число. В качестве <<действия>> в
команде \texttt{gdata} может быть набор из нескольких команд.



\section{Гистограммы в \mpost}
\label{sec:graphics:hist}


\begin{figure}[tbp]
  \centering
  \includegraphics[width=0.7\textwidth]{graphics.3.eps}
  
  \caption{Распределение по баллам, полученных на Открытой олимпиаде
    по физике в НГУ в 2004 году.}
  \label{fig:graph:hist}
\end{figure}

Если Вы хотите нарисовать гистограмму, то можно воспользоваться
следующими макросами:
\begin{lstlisting}
% Файл graphics.mp
% делает профиль гистограммы из пути
def histpath(expr pairs) =
  for i=0 upto length pairs:
    if (i>0):--else:fi((point i of pairs)-
      ((xpart(point 1 of pairs)-
        xpart(point 0 of pairs))/2,0))--
    ((point i of pairs)+
      ((xpart(point 1 of pairs)-
        xpart(point 0 of pairs))/2,0))
  endfor 
enddef;

% делает зацикленный профиль гистограммы для закрашивания
def histpathcycle(expr pairs) =
  ((xpart(point 0 of pairs),0)-
    ((xpart(point 1 of pairs)-
      xpart(point 0 of pairs))/2,0))
  --histpath(pairs)--
  ((xpart(point infinity of pairs),0)+
    ((xpart(point 1 of pairs)-
      xpart(point 0 of pairs))/2,0))--cycle 
enddef;
\end{lstlisting}

Распределение представленное на картинке (рис.~\ref{fig:graph:hist})
похожее на убывающую экспоненту. Вот так рисовались <<пятёрки>>:
\begin{lstlisting}
% Файл graphics.mp
% Оценки
path five;    
five:=(21,2)--(22,5)--(23,1)--(24,0)--(25,1)--
      (26,1)--(27,1)--(28,3)--(29,0)--(30,0)--(31,0);
% Заполняем гистограмму
gfill histpathcycle(five)  withcolor 0.6white;
\end{lstlisting}
Для закрашивания контура применяется инструкция \texttt{gfill} "---
аналог команды \texttt{fill}.

Данные по оценкам получались в результате обработки текстовых файлов
со статистикой с помощью простого скрипта на \texttt{perl}. Время,
которое потребовалось на автоматизацию составило примерно один
человеко-день, что многократно уступает времени написания полного
отчёта куда вошли подобные гистограммы и оформлению всех условий и
решений Открытой олимпиады и последующих за ней летних вступительных
экзаменов.

Создание своих макросов на \mpost{} является стандартным действием.
\meta{} не страдает избыточностью, поощряя <<затачивать>> окружения
под свои нужды.

\section{Круговые диаграммы}
\label{sec:round}

Пакет \texttt{piechartmp.mp} относительно <<молодой>>
пакет. Замечательная, можно сказать красочная, документация 
поставляется в виде файла \texttt{piechartmp.pdf} и примеров.

\begin{figure}[htbp]
  \centering
  \includegraphics[width=0.7\textwidth]{pie.1.eps}  
  \caption{Распределение оценок}
  \label{fig:round:marks}
\end{figure}
Как обычно, за русским языком надо приглядывать. По умолчанию пакет
работает только с латиницей.

\begin{lstlisting}
% Файл pie.mp
input piechartmp;
% Круговые гистограммы
% Открытая Олимпиада "ФФ-51"
beginfig(1) ;
  numeric u; u:=1mm;
  % чтобы был русский
  SetupText(1, "\input{preheader-base}", "|\bs|begin{document}")
  label(btex Открытая олимпиада НГУ-2005 etex,(5u,25u));
  label(btex распределение оценок ФФ-51 etex,(5u,20u));
  % Чтобы отображался процент
  SetupPercent(this, " \%");
  % Опеределение сегментов
  Segment( 15,"\small два", auto) ;
  Segment( 24,"три", auto) ;
  Segment( 16,"\large четыре", auto) ;
  Segment( 16,"\huge пять", red ) ;
  % Создание круговой гистограммы
  PieChart(30u, 0.2, 65, 0, 0);
  % метки
  Label(0)(percent)(inwards,0) withcolor white;
  Label.auto(0)(name)(outwards,0) ;
endfig;
\end{lstlisting}



Алгоритм создания круговой или секторной диаграммы следующий:
\begin{itemize}
\item Если Вы хотите воспользоваться автоматической системой
  размещения меток, то с помощью команды \texttt{SetupText} следует
  настроить ввод текста. В файле \texttt{preheader-base.tex} должна
  быть минимальная шапка для документа \LaTeX{}. Если Вы хотите
  использовать русский язык, то там обязательно должны быть строки
  вида \texttt{\bs usepackage[T2A]\{fontenc\}} и \texttt{\bs
    usepackage[koi8-r]\{inputenc\}}. Вместо \texttt{koi8-r} можно
  поставить свою кодировку.
\item С помощью команды \texttt{Segment} определить сегменты. В
  качестве аргументов команде передаётся число (измеряемая величина),
  текстовая метка и цвет сегмента (можно указать значение по умолчанию
  \texttt{auto}). 

  Можно также ввести четвёртый необязательный строковый параметр,
  который заменяет измеряемую величину при создании меток.  Это решает
  проблему ограничения на диапазон чисел в \mpost{}.
\item Нарисовать гистограмму. В качестве параметров команде
  \texttt{PieChart} передаётся размер, высота диаграммы, угол под
  которым мы на неё смотрим (трёхмерия), угол поворота вокруг
  центральной оси и <<смещение>> сегментов относительно центра.
\item Расставить метки.
\end{itemize}



Каждому сегменту при создании присваивается порядковый номер начиная с
единицы. Все изменения в круговой диаграмме делаются глобально. Пакет
написан так, чтобы было удобно работать в одном \texttt{mp}-файле
ровно с одной диаграммой. Если при описании диаграммы внутри окружения
\texttt{beginfig} что-то уже определили, то нет необходимости в
последующих окружениях это повторять. Этот режим удобен если нужно
создать несколько модификаций одной диаграммы, например, для создания
<<оверлеев>> в презентации. Минусом такого подхода является то, что
если в этом же \texttt{mp}-файле хочется создать ещё одну гистограмму,
то уже определённые сегменты необходимо спрятать.

\begin{figure}[htbp]
  \centering
  \includegraphics[width=0.7\textwidth]{pie.2.eps}  
  \caption{Распределение <<вещества>> в современной вселенной.}
  \label{fig:round:universe}
\end{figure}

\begin{lstlisting}
% Круговые гистограммы
% Распределение вещества во вселенной
beginfig(2) ;
  numeric u; u:=1mm;
  % Прячем определённые ранее сегменты
  SegmentState(1,hidden,this);
  SegmentState(2,hidden,this);
  SegmentState(3,hidden,this);
  SegmentState(4,hidden,this);
  % Опеределение новых сегментов
  Segment( 65,"\Large \bf тёмная энергия",green,"\LARGE 65\%--70\%");
  Segment( 25,"\Large \bf тёмная материя", (1,0,1),"\LARGE 25\%");
  Segment( 0.5,"звёзды", (1,1,0),"\LARGE 0.5\%");
  Segment( 5,"обычное вещество", red,"\LARGE 5\%");
  Segment( 1,"нейтрино", black,"\LARGE 0.3\%--3\%");
  % Выдвигаем сегменты из диаграммы
  SegmentState(7,this,0.7);
  SegmentState(9,this,0.7);
  SegmentState(8,this,0.7);
  % Создаём круговой гистограммы
  PieChart(30u, 0.3, 30, 340, 0);
  % Размещаем метки
  Label.auto(0)(name)(outwards,0) ;
  Label.auto(5)(value)(inwards,0) shifted (7u,-7u) withcolor white;
  Label.auto(6)(value)(inwards,0) shifted (0u,5u) withcolor white;
  Label.auto(7)(value)(inwards,(0u,-15u)) withcolor (1,1,0);
  Label.auto(8)(value)(inwards,(25u,10u)) withcolor red;
  Label.auto(9)(value)(inwards,(20u,20u)) withcolor black;
endfig;
\end{lstlisting}

Состояние каждого из сегментов можно задавать с помощь команды
\texttt{SegmentState}. 
\begin{lstlisting}
SegmentState(Порядковый номер сегмента,
  устанавливаемое состояние сегмента или this если оно не меняется,
  радиальный сдвиг сегмента или this если он не меняется);
\end{lstlisting}
Состояние сегмента может быть:
\begin{itemize}
\item \texttt{normal} "--- сегмент становится видимым,
\item \texttt{invisible} "--- сегмент не рисуется при создании
  круговой диаграммы (в диаграмме остаётся пустое место),
\item \texttt{hidden} "--- при создании диаграммы этот сегмент игнорируется.
\end{itemize}
Радиальный сдвиг сегмента указывается в процентах, где 1 "--- это
100\%, то есть сегмент полностью <<выдвинут>>.

Для установки меток используется команда \texttt{Label}:
\begin{lstlisting}
Label(Порядковый номер сегмента)(метка)
     (базовая точка в системе отсчёта сегмента, сдвиг);
\end{lstlisting}
\texttt{Label} понимает те-же суффиксы, что и обычная команда
\texttt{label}, плюс она понимает суффикс \texttt{auto}. При установки
суффикса \texttt{auto} \texttt{Label} пытается сама угадать где лучше
поставить метку.

В качестве порядкового номера сегмента можно передать 0. В этом случае
команда \texttt{Label} применяется ко всем видимым сегментам.
\texttt{Label} может принимать в качестве аргумента список порядковых
номеров сегментов, разделённых запятыми (например: \texttt{5,7,9}).

Метка может быть просто текстовой строкой или одним из стандартных
значений:
\begin{itemize}
\item \texttt{value} "--- измеряемая величина, которая приписывается
  сегменту при его создании,
\item \texttt{percent} "--- процент занимаемой площади,
\item \texttt{name} "--- имя сегмента, которое приписывается ему при
  его создании.
\end{itemize}

Базовая точка представляется в виде пары чисел \texttt{(x,y)}, где
\texttt{x} "--- расстояние от вершины сегмента (0 "--- это вершина, 1
"--- это противоположный от вершины край), а \(y\) "--- эквивалент
полярному углу (0 "--- край сегмента по часовой стрелки, 1 "--- край
сегмента против часовой стрелки).  В пакете определены константы
\texttt{inwards=(0.7,0.7)} и \texttt{outwards=(1.1,0.5)}. Сдвиг же
представлен в терминах всего графика (например, \texttt{(1cm,0)} "---
означает сдвиг на 1 сантиметр вправо).

P.S. При желании тип заливки и порядок цветов по умолчанию можно определять
самостоятельно. Подробней об этом рассказано в документации к пакету
(\texttt{piechartmp.pdf}).

\section{\LaTeX{} рисует с помощью \mpost}
\label{sec:mfpic}

\begin{figure}[htbp]
  \centering
  \includegraphics[width=0.7\textwidth]{graphics-mfpic.eps}  
  \caption{График косинуса, синуса и тангенса.}
  \label{fig:graph:mfpic}
\end{figure}

Для рисования графиков можно воспользоваться и возможностями самого
\LaTeX. Например, с этой обязанностью прекрасно справляется стандартный
пакет \emph{mfpic}. Для <<отрисовки>> функций с помощью этого пакета
достаточно задать саму функцию, а не рисовать по точкам: 
\begin{lstlisting}[language=TeX]
% файл graphics-mfpic.tex
% Пример от Сергея В. Знаменского
|\bs|documentclass{article}
\usepackage[koi8-r]{inputenc}
\usepackage[russian]{babel}
\usepackage[metapost]{mfpic}
% Указываем mp-файл куда будет |<<|складываться|>>| код mfpic
\opengraphsfile{graph-mfp}
|\bs|begin{document}
% Запрет на печатать номера страницы 
\pagestyle{empty}
% Начинаем создание графика
\mfpic[1][57.2]{-100}{300}{-1.2}{1.2}
% Оси координат
\axes
\xmarks{-90,90,180,270}
\ymarks{-1,1}
% Рисуем синус точками
\dotted\function{-90,270,4.5}{sind(x)}
% Рисуем косинус пунктиром
\dashed\function{-90,270,4.5}{cosd(x)}
% Рисуем тангенс сплошной линией
\function{-50,50,10}{tand(x)}
\function{130,230,10}{tand(x)}
% Заканчиваем создание графика
\endmfpic
% Закрываем mp-файл
\closegraphsfile
|\bs|end{document}
\end{lstlisting}
Для получения картинки необходимо выполнить следующие действия:
\begin{lstlisting}[language=bash,frame=]
> latex graphics-mfpic.tex
> mpost graph-mfp.mp
> latex graphics-mfpic.tex
> dvips -E graphics-mfpic.dvi -o graphics-mfpic.eps
\end{lstlisting}
При компиляции файла \texttt{graphics-mfpic.tex} создаётся
\texttt{graph-mfp.mp}, куда пишутся команды на языке \meta. Если
посмотреть на код \texttt{graph-mfp.mp}, то можно увидеть что там
используется макрос \texttt{function}, который позволяет рисовать
функции одной командой без всяких циклов. То, как это делается, можно
подглядеть в библиотечке \texttt{grafbase.mp}, которая входит в состав
пакета \emph{mfpic}.

Более подробно про пакет \texttt{mfpic} можно узнать из документации
которую можно найти в директории
\texttt{\$(TEXMF)/texmf-dist/doc/generic/mfpic/}, где
\texttt{\$(TEXMF)} "--- директория в которую установлен \LaTeX{} (это
заведомо верно для дистрибутива \TeXLive).



\section{gnuplot}
\label{sec:gnuplot}
В случае отображения больших объёмов данных лучше использовать
\texttt{gnuplot}. Для того чтобы \texttt{gnuplot} работал с \mpost,
необходимо определить правильное устройство вывода, то есть
\texttt{gnuplot} следует передать команду:
\begin{lstlisting}[language=bash,frame=]
set terminal mp color latex 
\end{lstlisting}
\begin{figure}[htbp]
  \centering
  \includegraphics[width=0.7\textwidth]{Lint-year.0.eps}  
  \caption{Интегральная светимость от времени. Данные за полтора года
    (примерно 130 тысяч точек) обработаны с помощью программы
    \texttt{gnuplot}.}
  \label{fig:graph:gnuplot}
\end{figure}
В этом случае \texttt{gnuplot} будет выводить графики в формате
\mpost{}. К сожалению, похоже, что вывод в \mpost{} давно не
поддерживался, поэтому установка кодировки:
\begin{lstlisting}[language=bash,frame=]
set encoding koi8r
\end{lstlisting}
не оказывает должного эффекта. Получившийся mp-файл приходится
<<дотачивать>> в ручную.  Благо это не сложно (следует поправить
только заголовок), но для автоматизации следует озадачиться
исправлением этой неприятной ошибки в \texttt{gnuplot}.

В случае если будет желание изменить метки, то следует обратить
внимание на переменную \texttt{textmag}, которая отвечает за размер
текста. 

\section{Подведём итоги}
\label{sec:graph:result}

С помощью \mpost{} можно создавать двумерные графики и диаграммы любой
сложности. Возможности языка \meta{} и стандартные пакеты позволяют
сконцентрироваться на смысловой части и не отвлекаться на отдельные
элементы оформления.

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "mpillustration"
%%% End: 
