Aller au contenu

Diagrammes en barres avec pgfplots

Ajoutez ybar (barres verticales) ou xbar (barres horizontales) à un axis pgfplots, nommez les catégories avec symbolic x coords, et donnez chaque série sous forme d’\addplot avec des coordonnées.

Barres verticales avec catégories nommées

ybar sur l’axe transforme chaque série en barres. symbolic x coords liste les noms des catégories dans l’ordre, et xtick=data place une graduation sous chaque barre.

Une série de barres

LaTeXPréambule : \usepackage{pgfplots}Ouvrir dans l'éditeur (s’ouvre dans un nouvel onglet)
\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}

Les barres partent de zéro. Sans ymin=0, l’axe ajoute un peu d’espace sous zéro : définissez-le pour que les barres reposent sur le cadre. enlarge x limits ajoute de l’espace sur les côtés, pour que les barres extérieures ne soient pas coupées par le cadre.

Barres groupées et valeurs affichées

Avec plusieurs séries, les barres de chaque catégorie se placent côte à côte. nodes near coords affiche chaque valeur au-dessus de sa barre, et bar width définit la largeur (10pt par défaut).

Deux séries, avec les valeurs sur les barres

LaTeXPréambule : \usepackage{pgfplots}Ouvrir dans l'éditeur (s’ouvre dans un nouvel onglet)
\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}
Composé par Scissor LaTeX: Deux séries, avec les valeurs sur les barres

ybar=4pt définit l’écart entre les barres d’un groupe (2pt par défaut).

Barres empilées

ybar stacked empile les séries au lieu de les placer côte à côte. Le deuxième \addplot commence là où le premier s’arrête.

Barres empilées par trimestre

LaTeXPréambule : \usepackage{pgfplots}Ouvrir dans l'éditeur (s’ouvre dans un nouvel onglet)
\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}

Barres horizontales

xbar dessine les barres de gauche à droite. Inversez le rôle des axes : les catégories vont dans symbolic y coords et ytick=data, et chaque coordonnée s’écrit (valeur, catégorie).

Barres horizontales

LaTeXPréambule : \usepackage{pgfplots}Ouvrir dans l'éditeur (s’ouvre dans un nouvel onglet)
\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 fonctionne aussi.

Des nombres comme catégories

Les années et autres nombres n’ont pas besoin de symbolic x coords : tracez-les comme des nombres et utilisez xtick=data. Par défaut, pgfplots écrit 2024 sous la forme « 2,024 » ; désactivez le séparateur de milliers dans le style des étiquettes de graduation.

Des années sur l’axe x

LaTeXPréambule : \usepackage{pgfplots}Ouvrir dans l'éditeur (s’ouvre dans un nouvel onglet)
\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}

Les options en un coup d’œil

OptionEffetDans Scissor LaTeX
ybar, xbarbarres verticales ou horizontales, côte à côteFonctionne
ybar=4ptl’écart entre les barres d’un groupeFonctionne
ybar stacked, xbar stackedbarres empiléesFonctionne sur les axes linéaires
bar width=12ptla largeur de chaque barreFonctionne
bar shift=..décale une série latéralementFonctionne
nodes near coordsla valeur au-dessus (ou à côté) de chaque barreFonctionne
symbolic x coords, symbolic y coordscatégories nomméesFonctionne, sauf pour les noms qui ressemblent à des nombres (pas d’étiquettes de graduation)
xticklabel style={rotate=45, anchor=east}noms de catégories inclinésFonctionne
ybar intervalbarres qui remplissent l’espace entre les valeurs xEn partie : dessinées comme des barres ordinaires aux valeurs x
hist (bibliothèque statistics)répartit les valeurs en classesNon pris en charge : ignorée avec un message, les valeurs brutes sont tracées comme une ligne

Ce qui diffère d’une installation TeX

Tous les exemples de cette page compilent aussi avec pgfplots dans une installation TeX. Manuel : ctan.org/pkg/pgfplots.

Voir aussi les bases de pgfplots, Barres d’erreur, Données depuis un CSV et pgfplots.

Questions et réponses

Comment créer un diagramme en barres en LaTeX ?

Chargez pgfplots et écrivez \begin{axis}[ybar, symbolic x coords={A,B,C}, xtick=data] avec un \addplot coordinates {(A,3) (B,5) (C,2)}; par série.

Comment afficher les valeurs au-dessus des barres ?

Ajoutez nodes near coords aux options de l’axe. Chaque barre reçoit sa valeur comme étiquette.

Comment faire partir les barres de zéro ?

Elles partent déjà de zéro. Définissez ymin=0 sur l’axe (ou xmin=0 pour xbar) pour supprimer l’espace en dessous.

Chaque exemple de cette page est composé par Scissor LaTeX lors de la génération du site. Dernière mise à jour : 2026-11-07.