Столбчатые диаграммы с pgfplots
Добавьте ybar (вертикальные столбцы) или xbar (горизонтальные) к axis pgfplots, назовите категории через symbolic x coords и задайте каждую серию через \addplot с координатами.
Вертикальные столбцы с именованными категориями
ybar у оси превращает каждую серию в столбцы. symbolic x coords перечисляет имена категорий по порядку, а xtick=data ставит по одному делению под каждым столбцом.
Одна серия столбцов
\begin{tikzpicture}
\begin{axis}[
ybar, ymin=0,
symbolic x coords={Mon, Tue, Wed, Thu, Fri},
xtick=data,
ylabel={Visitors},
enlarge x limits=0.15,
]
\addplot coordinates {(Mon,44) (Tue,31) (Wed,38) (Thu,27) (Fri,40)};
\end{axis}
\end{tikzpicture}Столбцы начинаются с нуля. Без ymin=0 ось добавляет немного места ниже нуля, поэтому задайте этот параметр, чтобы столбцы стояли на рамке. enlarge x limits добавляет место по бокам, чтобы крайние столбцы не обрезались рамкой.
Сгруппированные столбцы и подписи значений
При нескольких сериях столбцы каждой категории стоят рядом. nodes near coords печатает каждое значение над его столбцом, а bar width задаёт ширину (по умолчанию 10pt).
Две серии со значениями на столбцах
\begin{tikzpicture}
\begin{axis}[
ybar, ymin=0, ymax=55, bar width=12pt,
symbolic x coords={Erika, Hans, John},
xtick=data, enlarge x limits=0.25,
nodes near coords,
ylabel={Points},
legend style={at={(0.5,-0.12)}, anchor=north, legend columns=2},
]
\addplot coordinates {(Erika,44) (Hans,31) (John,38)};
\addplot coordinates {(Erika,40) (Hans,36) (John,29)};
\legend{Round 1, Round 2}
\end{axis}
\end{tikzpicture}ybar=4pt задаёт промежуток между столбцами одной группы (по умолчанию 2pt).
Составные столбцы
ybar stacked ставит серии друг на друга, а не рядом. Второй \addplot начинается там, где кончается первый.
Составные столбцы по кварталам
\begin{tikzpicture}
\begin{axis}[
ybar stacked, ymin=0, bar width=16pt,
symbolic x coords={Q1, Q2, Q3, Q4},
xtick=data, enlarge x limits=0.2,
legend pos=north west, ylabel={Sales},
]
\addplot coordinates {(Q1,12) (Q2,18) (Q3,15) (Q4,22)};
\addplot coordinates {(Q1,6) (Q2,9) (Q3,12) (Q4,10)};
\legend{Online, In store}
\end{axis}
\end{tikzpicture}Горизонтальные столбцы
xbar рисует столбцы слева направо. Поменяйте роли осей: категории идут в symbolic y coords и ytick=data, а каждая координата записывается как (значение, категория).
Горизонтальные столбцы
\begin{tikzpicture}
\begin{axis}[
xbar, xmin=0, xmax=50,
symbolic y coords={Rust, Python, C},
ytick=data, enlarge y limits=0.3,
nodes near coords, xlabel={Projects},
width=8cm, height=5cm,
]
\addplot coordinates {(44,Rust) (31,Python) (12,C)};
\end{axis}
\end{tikzpicture}xbar stacked тоже работает.
Числа в роли категорий
Годам и другим числам не нужен symbolic x coords: стройте их как числа и используйте xtick=data. По умолчанию pgfplots пишет 2024 как «2,024»; отключите разделитель тысяч в стиле подписей делений.
Годы на оси x
\begin{tikzpicture}
\begin{axis}[
ybar, ymin=0, xtick=data, enlarge x limits=0.25,
x tick label style={/pgf/number format/1000 sep=},
]
\addplot coordinates {(2023,18) (2024,31) (2025,44)};
\end{axis}
\end{tikzpicture}Параметры вкратце
| Параметр | Что делает | В Scissor LaTeX |
|---|---|---|
ybar, xbar | вертикальные или горизонтальные столбцы рядом друг с другом | Работает |
ybar=4pt | промежуток между столбцами одной группы | Работает |
ybar stacked, xbar stacked | столбцы друг на друге | Работает на линейных осях |
bar width=12pt | ширина каждого столбца | Работает |
bar shift=.. | сдвиг серии вбок | Работает |
nodes near coords | значение над каждым столбцом (или рядом с ним) | Работает |
symbolic x coords, symbolic y coords | именованные категории | Работает, кроме имён, похожих на числа (без подписей делений) |
xticklabel style={rotate=45, anchor=east} | наклонные имена категорий | Работает |
ybar interval | столбцы, заполняющие промежутки между значениями x | Частично: рисуются как обычные столбцы на значениях x |
hist (библиотека statistics) | раскладывает значения по интервалам | Не поддерживается: игнорируется с сообщением, исходные значения рисуются линией |
Чем это отличается от установленного TeX
Все примеры на этой странице компилируются и с pgfplots в установленном TeX. Руководство: ctan.org/pkg/pgfplots.
См. также основы pgfplots, планки погрешностей, данные из CSV и pgfplots.
Вопросы и ответы
Как сделать столбчатую диаграмму в LaTeX?
Подключите pgfplots и напишите \begin{axis}[ybar, symbolic x coords={A,B,C}, xtick=data] с одним \addplot coordinates {(A,3) (B,5) (C,2)}; на каждую серию.
Как показать значения над столбцами?
Добавьте nodes near coords к параметрам оси. Каждый столбец получит подпись со своим значением.
Как сделать, чтобы столбцы начинались с нуля?
Они уже начинаются с нуля. Задайте ymin=0 для оси (или xmin=0 для xbar), чтобы убрать место под ними.
Каждый пример на этой странице верстается в Scissor LaTeX при сборке сайта. Обновлено 2026-11-07.