Wykresy słupkowe w pgfplots
Dodaj ybar (słupki pionowe) lub xbar (słupki poziome) do axis w pgfplots, nazwij kategorie za pomocą symbolic x coords i podaj każdą serię jako \addplot ze współrzędnymi.
Słupki pionowe z nazwanymi kategoriami
ybar w osi zamienia każdą serię w słupki. symbolic x coords wymienia nazwy kategorii po kolei, a xtick=data umieszcza po jednej kresce pod każdym słupkiem.
Jedna seria słupków
\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}Słupki zaczynają się od zera. Bez ymin=0 oś dodaje trochę miejsca poniżej zera, więc ustaw tę opcję, aby słupki stały na ramce. enlarge x limits dodaje miejsce po bokach, dzięki czemu ramka nie przycina skrajnych słupków.
Słupki grupowane i etykiety wartości
Przy kilku seriach słupki każdej kategorii stoją obok siebie. nodes near coords wypisuje każdą wartość nad jej słupkiem, a bar width ustawia szerokość (domyślnie 10pt).
Dwie serie z wartościami na słupkach
\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 ustawia odstęp między słupkami jednej grupy (domyślnie 2pt).
Słupki skumulowane
ybar stacked układa serie jedna na drugiej zamiast obok siebie. Drugi \addplot zaczyna się tam, gdzie kończy się pierwszy.
Słupki skumulowane według kwartałów
\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}Słupki poziome
xbar rysuje słupki od lewej do prawej. Zamień role osi: kategorie trafiają do symbolic y coords i ytick=data, a każdą współrzędną zapisuje się jako (wartość, kategoria).
Słupki poziome
\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 również działa.
Liczby jako kategorie
Lata i inne liczby nie potrzebują symbolic x coords: narysuj je jako liczby i użyj xtick=data. pgfplots domyślnie zapisuje 2024 jako „2,024”; wyłącz separator tysięcy w stylu etykiet kresek.
Lata na osi 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}Opcje w skrócie
| Opcja | Co robi | W Scissor LaTeX |
|---|---|---|
ybar, xbar | słupki pionowe lub poziome, obok siebie | Działa |
ybar=4pt | odstęp między słupkami jednej grupy | Działa |
ybar stacked, xbar stacked | słupki jeden na drugim | Działa na osiach liniowych |
bar width=12pt | szerokość każdego słupka | Działa |
bar shift=.. | przesuwa serię w bok | Działa |
nodes near coords | wartość nad każdym słupkiem (lub obok niego) | Działa |
symbolic x coords, symbolic y coords | nazwane kategorie | Działa, z wyjątkiem nazw wyglądających jak liczby (brak etykiet kresek) |
xticklabel style={rotate=45, anchor=east} | pochylone nazwy kategorii | Działa |
ybar interval | słupki wypełniające przestrzeń między wartościami x | Częściowo: rysowane jako zwykłe słupki w wartościach x |
hist (biblioteka statistics) | zlicza wartości w przedziałach | Nieobsługiwane: pomijane z komunikatem, surowe wartości są rysowane jako linia |
Czym różni się od instalacji TeX
Wszystkie przykłady na tej stronie kompilują się także z pgfplots w instalacji TeX. Dokumentacja: ctan.org/pkg/pgfplots.
Zobacz też podstawy pgfplots, Słupki błędów, Dane z CSV i pgfplots.
Pytania i odpowiedzi
Jak zrobić wykres słupkowy w LaTeX?
Załaduj pgfplots i napisz \begin{axis}[ybar, symbolic x coords={A,B,C}, xtick=data] z jednym \addplot coordinates {(A,3) (B,5) (C,2)}; na każdą serię.
Jak pokazać wartości nad słupkami?
Dodaj nodes near coords do opcji osi. Każdy słupek dostaje swoją wartość jako etykietę.
Jak sprawić, by słupki zaczynały się od zera?
One już zaczynają się od zera. Ustaw ymin=0 w osi (lub xmin=0 dla xbar), aby usunąć miejsce pod nimi.
Każdy przykład na tej stronie jest składany przez Scissor LaTeX podczas budowania witryny. Ostatnia aktualizacja: 2026-11-07.