Перейти к содержанию

Линейные графики с pgfplots

Добавьте по одному \addplot на каждую линию внутри axis; задайте стиль параметрами вроде red, dashed, thick или mark=square* или предоставьте выбор стиля списку циклов.

Несколько линий на одной оси

Каждый \addplot добавляет серию. Без параметров серии по очереди берут стиль из списка циклов. С \addplot+[...] этот стиль сохраняется, а вы меняете одну его часть.

Три серии из стандартного списка циклов

LaTeXПреамбула: \usepackage{pgfplots}Открыть в редакторе (откроется в новой вкладке)
\begin{tikzpicture}
  \begin{axis}[xlabel=Week, ylabel=Orders, legend pos=north west]
    \addplot coordinates {(1,12) (2,18) (3,25) (4,31) (5,44)};
    \addplot coordinates {(1,10) (2,14) (3,15) (4,21) (5,24)};
    \addplot+[dashed] coordinates {(1,5) (2,9) (3,8) (4,12) (5,13)};
    \legend{Erika, Hans, John}
  \end{axis}
\end{tikzpicture}
Свёрстано в Scissor LaTeX: Три серии из стандартного списка циклов

Стили линий и маркеры

Параметры после \addplot задают цвет, линию и маркеры. Их можно свободно сочетать.

ПараметрЗначенияВ Scissor LaTeX
цветred, blue!60!black, color=teal, любое имя или смесь xcolorРаботает
толщина линииultra thin, very thin, thin, semithick, thick, very thick, ultra thick, line width=1.5ptРаботает
штриховкаsolid, dashed, dotted, densely dashed, loosely dotted, dashdotted, dash pattern=on 4pt off 2ptРаботает
mark=*, o, square*, square, triangle*, triangle, diamond*, diamond, x, +, star, pentagon*, asterisk, otimes*, |, -, noneРаботает
mark size=3ptрадиус маркераРаботает
mark options={fill=white}стиль только маркеровРаботает
mark repeat=2маркер на каждой второй точкеРаботает
no marks, only marksтолько линии, только маркерыРаботает

Цвета, штриховка и маркеры

LaTeXПреамбула: \usepackage{pgfplots}Открыть в редакторе (откроется в новой вкладке)
\begin{tikzpicture}
  \begin{axis}[domain=0:4, samples=9, legend pos=outer north east]
    \addplot[blue, thick, mark=*] {x};
    \addplot[red, dashed, mark=square*, mark options={fill=white}] {x^1.5/2};
    \addplot[teal, densely dotted, very thick] {sqrt(x)};
    \addplot[orange, mark=triangle*, mark size=3pt, only marks] {4 - x};
    \legend{linear, power, root, falling}
  \end{axis}
\end{tikzpicture}
Свёрстано в Scissor LaTeX: Цвета, штриховка и маркеры

Маркеры всегда рисуются сплошными линиями, даже на штриховой серии, как в pgfplots.

Выбор списка циклов

Список циклов это последовательность стилей, которые используют простые команды \addplot. Выберите встроенный через cycle list name или напишите свой через cycle list.

Список циклов black white и собственный список

LaTeXПреамбула: \usepackage{pgfplots}Открыть в редакторе (откроется в новой вкладке)
\begin{tikzpicture}
  \begin{axis}[cycle list name=black white, width=6.5cm, height=5cm, title={black white}]
    \addplot coordinates {(0,0) (1,1) (2,4)};
    \addplot coordinates {(0,1) (1,2) (2,2)};
    \addplot coordinates {(0,2) (1,0) (2,1)};
  \end{axis}
\end{tikzpicture}
\begin{tikzpicture}
  \begin{axis}[cycle list={{red, thick}, {blue, dashed}}, width=6.5cm, height=5cm, title={custom}]
    \addplot coordinates {(0,0) (1,1) (2,4)};
    \addplot coordinates {(0,1) (1,2) (2,2)};
  \end{axis}
\end{tikzpicture}
Свёрстано в Scissor LaTeX: Список циклов black white и собственный список

Работают встроенные имена color (по умолчанию), exotic, black white, mark list и linestyles. \pgfplotscreateplotcyclelist{name}{...} в преамбуле определяет список, который можно использовать повторно.

Плавные кривые и ступеньки

smooth проводит через точки кривую вместо прямых отрезков; tension (по умолчанию 0.55) управляет её округлостью. const plot рисует ступенчатую функцию, которая держит каждое значение до следующей точки.

smooth и const plot

LaTeXПреамбула: \usepackage{pgfplots}Открыть в редакторе (откроется в новой вкладке)
\begin{tikzpicture}
  \begin{axis}[ymin=0, legend pos=north west]
    \addplot+[smooth] coordinates {(0,1) (1,2.5) (2,1.8) (3,3.2) (4,2.4)};
    \addplot+[const plot] coordinates {(0,0.5) (1,1) (2,1.5) (3,1.2) (4,2)};
    \legend{smooth, const plot}
  \end{axis}
\end{tikzpicture}

Функции в градусах и радианах

Формулы используют pgfmath: + - * / ^, скобки, sqrt, exp, ln, abs, min, max, sin, cos, tan и другие, а также константы pi и e. Углы задаются в градусах, поэтому переводите радианы через deg(x).

sin и cos на одном периоде

LaTeXПреамбула: \usepackage{pgfplots}Открыть в редакторе (откроется в новой вкладке)
\begin{tikzpicture}
  \begin{axis}[domain=0:2*pi, samples=80, xlabel=$t$,
               xtick={0,1.5708,3.1416,4.7124,6.2832},
               xticklabels={$0$,$\frac{\pi}{2}$,$\pi$,$\frac{3\pi}{2}$,$2\pi$},
               legend pos=south west]
    \addplot[blue, thick] {sin(deg(x))};
    \addplot[red, thick, dashed] {cos(deg(x))};
    \legend{$\sin t$, $\cos t$}
  \end{axis}
\end{tikzpicture}

Параметрические кривые

Чтобы построить кривую, заданную через x(t) и y(t), запишите обе формулы в круглых скобках через запятую и задайте variable=t.

Фигура Лиссажу

LaTeXПреамбула: \usepackage{pgfplots}Открыть в редакторе (откроется в новой вкладке)
\begin{tikzpicture}
  \begin{axis}[axis lines=middle, xmin=-1.3, xmax=1.3, ymin=-1.3, ymax=1.3]
    \addplot[purple, thick, domain=0:360, samples=120, variable=t]
      ({cos(t)}, {sin(2*t)});
  \end{axis}
\end{tikzpicture}

Разрывы кривой

Функция вроде 1/x уходит в бесконечность. restrict y to domain отбрасывает точки вне диапазона, а unbounded coords=jump разрывает линию в этом месте, вместо того чтобы соединять две ветви. Укажите оба параметра у \addplot.

1/x с разрывом в нуле

LaTeXПреамбула: \usepackage{pgfplots}Открыть в редакторе (откроется в новой вкладке)
\begin{tikzpicture}
  \begin{axis}[ymin=-10, ymax=10, axis lines=middle]
    \addplot[blue, thick, domain=-3:3, samples=200,
             restrict y to domain=-10:10, unbounded coords=jump] {1/x};
  \end{axis}
\end{tikzpicture}

Чем это отличается от установленного TeX

Руководство pgfplots на CTAN описывает каждый параметр: ctan.org/pkg/pgfplots. О точках без линий читайте на странице точечных диаграмм.

См. также основы pgfplots, логарифмические оси, группы графиков и данные из CSV.

Вопросы и ответы

Как построить график функции в LaTeX?

Напишите \addplot[domain=a:b, samples=n] {formula}; внутри axis, используя x как переменную, например {x^2 - 1}.

Как убрать маркеры с линии?

Добавьте no marks к параметрам \addplot или укажите параметры без + (например, \addplot[blue]): так рисуется простая линия.

Почему sin(x) выглядит почти плоским?

pgfplots читает угол в градусах, поэтому sin(x) на отрезке от 0 до 6 охватывает всего 6 градусов. Пишите sin(deg(x)).

Каждый пример на этой странице верстается в Scissor LaTeX при сборке сайта. Обновлено 2026-11-07.