Staafdiagrammen met pgfplots
Voeg ybar (verticale staven) of xbar (horizontale staven) toe aan een pgfplots-axis, benoem de categorieën met symbolic x coords en geef elke reeks als een \addplot met coördinaten.
Verticale staven met benoemde categorieën
ybar op de as maakt van elke reeks staven. symbolic x coords noemt de categorieën op volgorde, en xtick=data zet onder elke staaf één maatstreepje.
Eén reeks staven
\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}Staven beginnen bij nul. Zonder ymin=0 voegt de as een beetje ruimte onder nul toe, dus zet die optie om de staven op het kader te laten staan. enlarge x limits voegt ruimte aan de zijkanten toe, zodat de buitenste staven niet door het kader worden afgesneden.
Gegroepeerde staven en waardelabels
Bij meerdere reeksen staan de staven van elke categorie naast elkaar. nodes near coords drukt elke waarde boven de staaf af, en bar width bepaalt de breedte (standaard 10pt).
Twee reeksen, met waarden op de staven
\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 bepaalt de ruimte tussen de staven van een groep (standaard 2pt).
Gestapelde staven
ybar stacked zet de reeksen op elkaar in plaats van naast elkaar. De tweede \addplot begint waar de eerste eindigt.
Gestapelde staven per kwartaal
\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}Horizontale staven
xbar tekent de staven van links naar rechts. Wissel de rollen van de assen om: de categorieën gaan in symbolic y coords en ytick=data, en elke coördinaat wordt geschreven als (waarde, categorie).
Horizontale staven
\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 werkt ook.
Getallen als categorieën
Jaartallen en andere getallen hebben geen symbolic x coords nodig: plot ze als getallen en gebruik xtick=data. pgfplots schrijft 2024 standaard als "2,024"; zet het scheidingsteken voor duizendtallen uit in de stijl van de maatstreeplabels.
Jaartallen op de x-as
\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}Opties in een oogopslag
| Optie | Wat het doet | In Scissor LaTeX |
|---|---|---|
ybar, xbar | verticale of horizontale staven, naast elkaar | Werkt |
ybar=4pt | de ruimte tussen de staven van één groep | Werkt |
ybar stacked, xbar stacked | staven op elkaar | Werkt op lineaire assen |
bar width=12pt | de breedte van elke staaf | Werkt |
bar shift=.. | een reeks zijwaarts verschuiven | Werkt |
nodes near coords | de waarde boven (of naast) elke staaf | Werkt |
symbolic x coords, symbolic y coords | benoemde categorieën | Werkt, behalve namen die op getallen lijken (geen maatstreeplabels) |
xticklabel style={rotate=45, anchor=east} | schuine categorienamen | Werkt |
ybar interval | staven die de ruimte tussen x-waarden vullen | Deels: getekend als gewone staven bij de x-waarden |
hist (bibliotheek statistics) | waarden in klassen tellen | Niet ondersteund: genegeerd met een melding, de ruwe waarden worden als lijn getekend |
Wat anders is dan in een TeX-installatie
Alle voorbeelden op deze pagina compileren ook met pgfplots in een TeX-installatie. Handleiding: ctan.org/pkg/pgfplots.
Zie ook de basis van pgfplots, Foutbalken, Data uit CSV en pgfplots.
Vragen en antwoorden
Hoe maak ik een staafdiagram in LaTeX?
Laad pgfplots en schrijf \begin{axis}[ybar, symbolic x coords={A,B,C}, xtick=data] met één \addplot coordinates {(A,3) (B,5) (C,2)}; per reeks.
Hoe toon ik de waarden boven op de staven?
Voeg nodes near coords toe aan de opties van de as. Elke staaf krijgt zijn waarde als label.
Hoe laat ik de staven bij nul beginnen?
Ze beginnen al bij nul. Zet ymin=0 op de as (of xmin=0 bij xbar) om de ruimte eronder weg te halen.
Elk voorbeeld op deze pagina wordt door Scissor LaTeX gezet wanneer de site wordt gebouwd. Laatst bijgewerkt op 2026-11-07.