Перейти до вмісту

Стовпчикові діаграми з pgfplots

Додайте ybar (вертикальні стовпчики) або xbar (горизонтальні) до axis пакета pgfplots, назвіть категорії через symbolic x coords і задайте кожен ряд як \addplot з координатами.

Вертикальні стовпчики з іменованими категоріями

ybar для осі перетворює кожен ряд на стовпчики. symbolic x coords перелічує назви категорій по порядку, а xtick=data ставить по одній поділці під кожним стовпчиком.

Один ряд стовпчиків

LaTeXПреамбула: \usepackage{pgfplots}Відкрити в редакторі (відкриється в новій вкладці)
\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).

Два ряди зі значеннями на стовпчиках

LaTeXПреамбула: \usepackage{pgfplots}Відкрити в редакторі (відкриється в новій вкладці)
\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}
Зверстано в Scissor LaTeX: Два ряди зі значеннями на стовпчиках

ybar=4pt задає проміжок між стовпчиками однієї групи (за замовчуванням 2pt).

Складені стовпчики

ybar stacked ставить ряди один на одного, а не поруч. Другий \addplot починається там, де закінчується перший.

Складені стовпчики за кварталами

LaTeXПреамбула: \usepackage{pgfplots}Відкрити в редакторі (відкриється в новій вкладці)
\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, а кожна координата записується як (значення, категорія).

Горизонтальні стовпчики

LaTeXПреамбула: \usepackage{pgfplots}Відкрити в редакторі (відкриється в новій вкладці)
\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

LaTeXПреамбула: \usepackage{pgfplots}Відкрити в редакторі (відкриється в новій вкладці)
\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.