Как стать автором
Обновить

Как делать графики в LaTeX

Время на прочтение2 мин
Количество просмотров25K
Очень часто в документ необходимо вставить тот или иной график. На сегодняшний день есть множество инструментов позволяющие это сделать с возможностью вставки в LaTeX документ среди них Gnuplot, Matplotlib. В данном посте хотелось бы осветить еще один способ создания графика при помощи пакета pgfplots. Этот пакет является «надстройкой»/«дополнением» к пакету Tikz(PGF).



Итак, будем считать что пакеты вы уже установили. Чтобы подключить пакеты необходимо в преамбулу вставить следующий код.

\usepackage{tikz}
\usepackage{pgfplots}


Код графиков помещается в составе специального окружения:

\begin{tikzpicture}
... Код для графиков
\end{tikzpicture}


В качестве первого графика предлагается создание графика по известным точкам. Допустим у нас есть небольшая таблица данных, которые необходимо отобразить, код для графика в этом случае будет иметь вид.

\begin{tikzpicture}
\begin{axis}
\addplot coordinates {
( 338.1, 266.45 )
( 169.1, 143.43 )
( 84.5, 64.80 )
( 42.3, 34.19 )
( 21.1, 9.47 )};
\end{axis}
\end{tikzpicture}


Визуально это будет выглядеть следующим образом.

image

Как видно на графике у нас есть и линии и маркеры. Если нам необходимо что-то одно то мы модифицируем \begin{axis} к виду: \begin{axis}[only marks], либо \begin{axis}[mark=none].

Рассмотрим теперь случай, когда нам необходимо разместить два графика на одном поле. Дополним первый пример графиком интерполяции имеющихся данных.

\begin{tikzpicture}
\begin{axis}
\addplot[only marks] coordinates {
( 338.1, 266.45 )
( 169.1, 143.43 )
( 84.5, 64.80 )
( 42.3, 34.19 )
( 21.1, 9.47 )};
\addplot[mark = none] coordinates {( 350, 279 )
( 0, 0 )};
\end{axis}
\end{tikzpicture}


image

Обращаю внимание что наличие/отсутствие маркеров мы задаем не координатной сетке, а отдельному графику.

Рассмотрим теперь случай когда необходимо построить график не по 10-20 точкам, а по значительно большему количеству. Допустим имеется файл следующей структуры

t x
0.000000 -0.000000
0.001000 20.326909
0.002000 19.856433
0.003000 8.330376
0.004000 13.982180
0.005000 17.589183
0.006000 19.611675


Тогда мы с легкостью сможем построить зависимость x(t) при помощи следующего кода:

\begin{tikzpicture}
\begin{axis}[ no markers,
xmin=0, xmax=0.3 ]
\addplot table[x=t,y=x] {foo.dat};
\end{axis}
\end{tikzpicture}


image

В данном примере мы использовали еще две переменные xmin,xmax. Как нетрудно догадаться при помощи этих переменных мы устанавливаем границы координатной сетки. Также существуют команды ymin и ymax.

В заключении поста хотелось бы описать механизм создания подписей и легенд. Подписи создаются командами ylabel и xlabel. После них идет подпись, в которой могут быть математические символы. Легенды создаются через команды \addlegendentry{Какой-то-текст} после команды графика.

\begin{tikzpicture}
\begin{axis}[
ylabel=Data,
xlabel=time ]
\addplot[only marks] coordinates {
( 338.1, 266.45 )
( 169.1, 143.43 )
( 84.5, 64.80 )
( 42.3, 34.19 )
( 21.1, 9.47 )};
\addlegendentry{Dots}
\addplot[mark = none] coordinates {( 350, 279 )
( 0, 0 )};
\addlegendentry{Line}
\end{axis}
\end{tikzpicture}


image

В пакете присутствуют еще множество всяких настроек, фишек. О них можно прочитать в официальной документации.
Теги:
Хабы:
+42
Комментарии22

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн