GNUPLOT

-не так Часто Задаваемые Вопросы-

обновлено 2010/12/26

После построения (No.1)

1 | 2 | 3

Я хочу вложить рисунок в TeX документ

У gnuplot есть терминал latex, позволяющий генерировать PicTeX графики. Этот терминал создает множество точек данных, изображающих график, причем в некоторых случаях обработка графика невозможна при помощи TeX, поскольку памяти компьютера бывает недостаточно. Самый простой способ включить график в документ TeX - сделать график в формате EPS и использовать графики пакета LaTeX (graphicx).

Сначала в gnuplot создается фигура с использованием расширителя EPS терминала, чтобы сделать EPS файл.

gnuplot> set term postscript eps enhanced
gnuplot> set output "test.eps"
gnuplot> set key left top
gnuplot> set size 0.5,0.5
gnuplot> set xrange [0:4]
gnuplot> set yrange [0:4]
gnuplot> set xlabel "Energy [MeV]"
gnuplot> set ylabel "Cross Section [b]"
gnuplot> set linestyle 1 lt 1
gnuplot> set linestyle 2 lt 1 pt 7
gnuplot> # for gnuplot ver.4
gnuplot> # set style line 1 lt 1
gnuplot> # set style line 2 lt 1 pt 7
gnuplot> plot 0.2536*x+1.1717      title "LESQ fit" \
>                                  with lines      linestyle 1,\
>             "test.dat" usi 1:2:3 title "data" \
>                                  with yerrorbars linestyle 2
fig/sample8.1a

Если изменить размер фигуры, то символы в созданном EPS станут слишком малы, относительно всего графика. Чтобы сделать их больше, используется опция set term , позволяющая увеличить шрифт, команда set size позволяет уменьшить фигуру, как показано выше. Размер шрифта остается, но при этом изменяется размер фигуры, благодаря чему символы кажутся больше.

Когда символы фигуры записаны в баре ошибок, драйвер PostScript рисует этот бар линией определенного типа. Если это не первый тип (сплошная линия), то gnuplot рисует бар ошибок пунктирной или точечной линией. Чтобы избежать этого, в опции linestyle значение линии необходимо установить как lt=1 и изменить символ числа pt.


Чтобы вставить график в TeX (LaTeX2e) документ, используется графический пакет. Команда \includegraphics{ EPS file } ставляет заданную фигуру. Имя EPS файла указывается вместо "EPS file". Если необходимо изменить размер фигуры, используется команда \resizebox{X size}{Y size} Если необходимо сохранить пропорции, ставиться символ "!" у значений X или Y. В следующем примере, фигура размещается по заданной конфигурации с указанным заголовком и шириной, равной 120мм.

\documentclass{article}
\usepackage{graphics}
\begin{document}
  \begin{figure}
    \begin{center}
      \resizebox{120mm}{!}{\includegraphics{test.eps}}
      \caption{This is a sample figure.}
      \label{test}
    \end{center}
  \end{figure}
\end{document}
fig/sample8.1b
up

Я хочу объединить несколько фигур в одну

Есть несколько способов объединить фигуры, например, использовать несколько построений, объединить EPS фигуры в одном изображении. Есть простой способ это сделать - использовать табличную среду LaTeX и подготовить EPS фигуры.

Если имеется 4 фигуры, которые выстраиваются в матрицу 2x2. Верхние фигуры имеют метку Y, в то время как нижние - метку X. Подписываются четыре изображения, но при этом все они рассматриваются как одно изображение.

Сначала рассматриваются 4 фигуры в 4 различных EPS файлах. В то время как все фигуры должны быть одного размера. В качестве примера приведены графики: y=sin(x), y=cos(x), y=sin(2x), y=cos(2x).

gnuplot> set term postscript eps enhanced
gnuplot> set lmargin 5
gnuplot> set bmargin 3
gnuplot> set rmargin 2
gnuplot> set tmargin 2
gnuplot> set size 0.5,0.5
gnuplot> set xrange [0:2*pi]
gnuplot> set yrange [-1:1]

gnuplot> set output "test1.eps"
gnuplot> set xlabel ""
gnuplot> set ylabel "sin x"
gnuplot> plot sin(x) notitle

gnuplot> set output "test2.eps"
gnuplot> set xlabel ""
gnuplot> set ylabel ""
gnuplot> plot sin(2*x) notitle

gnuplot> set output "test3.eps"
gnuplot> set xlabel "X [nodim.]"
gnuplot> set ylabel "cos x"
gnuplot> plot cos(x) notitle

gnuplot> set output "test4.eps"
gnuplot> set xlabel "X [nodim.]"
gnuplot> set ylabel ""
gnuplot> plot cos(2*x) notitle

Включаем в документ EPS фигуры с помощью окружения tabular и выравниваем.

\documentclass{article}
\usepackage{graphics}
\begin{document}
\begin{figure}
  \begin{center}
    \begin{tabular}{cc}
      \resizebox{60mm}{!}{\includegraphics{test1.eps}} &
      \resizebox{60mm}{!}{\includegraphics{test2.eps}} \\
      \resizebox{60mm}{!}{\includegraphics{test3.eps}} &
      \resizebox{60mm}{!}{\includegraphics{test4.eps}} \\
    \end{tabular}
    \caption{This is sample figures.}
    \label{test4}
  \end{center}
\end{figure}
\end{document}
fig/sample8.2b

Если необходимо сделать один PS файл,содержащий несколько фигур, использование табличных конфигураций и dvips опций командной строки -pp. С опцией -E есть возможность содать еще один EPS файл, содержащий несколько фигур. См. руководство по divps.

Конечно, то же самое можно сделать при помощи инструментов рисования Tgif или коммерческого программного обеспечения.

up