Перейти к содержимому
EasyLaTeX
EasyLaTeXDocs

TikZ, PGFPlots и техническая графика

TikZ создаёт схемы, блок-схемы и геометрические рисунки; PGFPlots построен на TikZ и предназначен для координатных осей и графиков данных. Оба создают масштабируемую векторную графику, согласованную со шрифтами и обозначениями документа.

Настройка EasyLaTeX для русского текста: XeLaTeX с article, fontspec и babel. Для схем подключите tikz, для графиков — pgfplots. Сложные рисунки увеличивают время компиляции.

Когда рисовать кодом

ПотребностьПодходящий способ
Фотографии, сканы, снимки экранаВставка готового изображения
Блок-схемы, структуры, геометрияTikZ
Функции, измерения, полосы ошибокPGFPlots
Сложные иллюстрации или готовые специализированные файлыЭкспорт PDF из графического инструмента; перед вставкой преобразуйте SVG в PDF или подходящее растровое изображение

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

Минимальная схема TikZ

Подключите TikZ в преамбуле:

LaTeX
\usepackage{tikz}

Нарисуйте оси и отрезок:

LaTeX
\begin{tikzpicture}  \draw[->] (0,0) -- (4,0) node[right] {$x$};  \draw[->] (0,0) -- (0,3) node[above] {$y$};  \draw[blue,thick] (0,0) -- (3,2);\end{tikzpicture}

В обычных декартовых координатах единицы по умолчанию равны 1 см. \draw создаёт пути, квадратные скобки задают стили, а node добавляет текст.

Узлы и стрелки

Определяйте стили и используйте их повторно:

LaTeX
\begin{tikzpicture}[  box/.style={draw, rounded corners, minimum width=2.5cm, minimum height=8mm},  arrow/.style={->, thick}]  \node[box] (input) {Входные данные};  \node[box, right=1.5cm of input] (process) {Обработка};  \node[box, right=1.5cm of process] (output) {Результат};  \draw[arrow] (input) -- (process);  \draw[arrow] (process) -- (output);\end{tikzpicture}

Синтаксис right=... of ... требует библиотеки позиционирования:

LaTeX
\usetikzlibrary{positioning}

Общие стили сохраняют единообразие схем. Сократите длинные подписи или задайте text width, не допуская наложения узлов.

Минимальный график PGFPlots

Подключите PGFPlots и задайте уровень совместимости:

LaTeX
\usepackage{pgfplots}\pgfplotsset{compat=1.18}

Постройте график по координатам, заданным в коде:

LaTeX
\begin{tikzpicture}  \begin{axis}[    xlabel={Время (с)},    ylabel={Скорость (м/с)},    grid=major  ]    \addplot coordinates {(0,0) (1,1) (2,4) (3,9)};  \end{axis}\end{tikzpicture}

axis управляет осями, делениями, подписями и сеткой; \addplot задаёт ряд. Явно указывайте величины и единицы измерения, не различайте ряды только цветом.

Чтение данных из файла

Создайте в проекте data/velocity.csv:

csv
time,velocity0,01,12,43,9

Затем прочитайте именованные столбцы:

LaTeX
\addplot table [x=time, y=velocity, col sep=comma] {data/velocity.csv};

Отделение данных от кода графика упрощает обновление и проверку. Имена столбцов должны совпадать с выбором в x= и y=.

Размещение графики в документе

Заключите рисунок в figure, чтобы получить подпись, метку и ссылку:

LaTeX
\begin{figure}[tbp]  \centering  % Здесь размещается tikzpicture или axis  \caption{Изменение скорости со временем}  \label{fig:velocity}\end{figure}

В подписи объясняйте содержимое, источник данных и неопределённость, если она существенна. Код рисования не заменяет это пояснение.

Частые проблемы

Environment tikzpicture undefined

Подключите tikz; для позиционирования узлов также нужен \usetikzlibrary{positioning}.

Environment axis undefined

Подключите pgfplots, а не только TikZ. Окружение axis относится к PGFPlots.

Медленная компиляция

Уменьшите число ненужных точек выборки и слоёв, используйте подготовленные файлы данных. Для очень большого рисунка заведите отдельный графический проект, скомпилируйте и скачайте PDF, затем загрузите его как изображение в основной проект.

Полный пример

LaTeX
\documentclass[a4paper,12pt]{article}\usepackage{fontspec}\setmainfont{CMU Serif}\setsansfont{CMU Sans Serif}\setmonofont{CMU Typewriter Text}\usepackage[russian]{babel}\usepackage{pgfplots}\pgfplotsset{compat=1.18}​\begin{document}​\begin{figure}[tbp]  \centering  \begin{tikzpicture}    \begin{axis}[      width=0.75\linewidth,      xlabel={Время (с)},      ylabel={Скорость (м/с)},      grid=major    ]      \addplot[blue,thick,mark=*] coordinates {        (0,0) (1,1) (2,4) (3,9)      };    \end{axis}  \end{tikzpicture}  \caption{Изменение скорости со временем}  \label{fig:velocity}\end{figure}​\end{document}
TikZ, PGFPlots и техническая графика | EasyLaTeX