Vai al contenuto

Grafici a barre con pgfplots

Aggiungi ybar (barre verticali) o xbar (barre orizzontali) a un axis di pgfplots, dai i nomi alle categorie con symbolic x coords, e scrivi ogni serie come un \addplot con coordinate.

Barre verticali con categorie con nome

ybar sull’axis trasforma ogni serie in barre. symbolic x coords elenca in ordine i nomi delle categorie, e xtick=data mette una tacca sotto ogni barra.

Una serie di barre

LaTeXPreambolo: \usepackage{pgfplots}Apri nell'editor (si apre in una nuova scheda)
\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}

Le barre partono da zero. Senza ymin=0 gli assi aggiungono un po’ di spazio sotto lo zero, quindi impostalo per far poggiare le barre sulla cornice. enlarge x limits aggiunge spazio ai lati, così le barre esterne non vengono tagliate dalla cornice.

Barre raggruppate ed etichette dei valori

Con più serie, le barre di ogni categoria stanno una accanto all’altra. nodes near coords scrive ogni valore sopra la sua barra, e bar width imposta la larghezza (10pt per impostazione predefinita).

Due serie, con i valori sulle barre

LaTeXPreambolo: \usepackage{pgfplots}Apri nell'editor (si apre in una nuova scheda)
\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}
Composto da Scissor LaTeX: Due serie, con i valori sulle barre

ybar=4pt imposta lo spazio tra le barre di un gruppo (2pt per impostazione predefinita).

Barre impilate

ybar stacked mette le serie una sopra l’altra invece che una accanto all’altra. Il secondo \addplot inizia dove finisce il primo.

Barre impilate per trimestre

LaTeXPreambolo: \usepackage{pgfplots}Apri nell'editor (si apre in una nuova scheda)
\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}

Barre orizzontali

xbar disegna le barre da sinistra a destra. Scambia i ruoli degli assi: le categorie vanno in symbolic y coords e ytick=data, e ogni coordinata si scrive come (valore, categoria).

Barre orizzontali

LaTeXPreambolo: \usepackage{pgfplots}Apri nell'editor (si apre in una nuova scheda)
\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}

Funziona anche xbar stacked.

Numeri come categorie

Gli anni e gli altri numeri non hanno bisogno di symbolic x coords: tracciali come numeri e usa xtick=data. Per impostazione predefinita pgfplots scrive 2024 come "2,024"; disattiva il separatore delle migliaia nello stile delle etichette delle tacche.

Anni sull’asse x

LaTeXPreambolo: \usepackage{pgfplots}Apri nell'editor (si apre in una nuova scheda)
\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}

Le opzioni in breve

OpzioneCosa faIn Scissor LaTeX
ybar, xbarbarre verticali o orizzontali, affiancateFunziona
ybar=4ptlo spazio tra le barre di un gruppoFunziona
ybar stacked, xbar stackedbarre una sopra l’altraFunziona su assi lineari
bar width=12ptla larghezza di ogni barraFunziona
bar shift=..sposta una serie di latoFunziona
nodes near coordsil valore sopra (o accanto a) ogni barraFunziona
symbolic x coords, symbolic y coordscategorie con nomeFunziona, tranne i nomi che sembrano numeri (nessuna etichetta delle tacche)
xticklabel style={rotate=45, anchor=east}nomi delle categorie inclinatiFunziona
ybar intervalbarre che riempiono lo spazio tra i valori xIn parte: disegnate come barre normali sui valori x
hist (libreria statistics)conta i valori in classiNon supportato: ignorato con un messaggio, i valori grezzi vengono disegnati come una linea

Cosa cambia rispetto a un’installazione TeX

Tutti gli esempi di questa pagina compilano anche con pgfplots in un’installazione TeX. Manuale: ctan.org/pkg/pgfplots.

Vedi anche Le basi di pgfplots, Barre di errore, Dati da CSV e pgfplots.

Domande e risposte

Come si crea un grafico a barre in LaTeX?

Carica pgfplots e scrivi \begin{axis}[ybar, symbolic x coords={A,B,C}, xtick=data] con un \addplot coordinates {(A,3) (B,5) (C,2)}; per ogni serie.

Come si mostrano i valori sopra le barre?

Aggiungi nodes near coords alle opzioni dell’axis. Ogni barra riceve il suo valore come etichetta.

Come faccio a far partire le barre da zero?

Partono già da zero. Imposta ymin=0 sull’axis (o xmin=0 per xbar) per togliere lo spazio sotto di esse.

Ogni esempio di questa pagina viene composto da Scissor LaTeX quando il sito viene generato. Ultimo aggiornamento: 2026-11-07.