Tableaux et figures

Informatique — LaTeX, chapitre 5

Un travail empirique se juge en partie sur ses tableaux et ses figures. LaTeX les compose remarquablement bien — à condition d’accepter sa logique, qui déroute : vous ne décidez pas où ils se placent.

Ce chapitre explique pourquoi, et comment obtenir un résultat de qualité professionnelle.

NoteDes fichiers à compiler

Comme au chapitre précédent, les blocs sont à recopier dans Overleaf ou dans votre distribution locale.

5.1 Le tableau

5.1.1 L’environnement tabular

\begin{tabular}{lrr}
Ville   & PIB   & Chômage \\
Tanger  & 45,2  & 11,2 \\
Rabat   & 62,1  & 8,4 \\
Fès     & 38,7  & 13,1 \\
\end{tabular}

Deux choses à comprendre.

L’argument {lrr} décrit les colonnes : autant de lettres que de colonnes, chacune indiquant l’alignement.

Lettre Alignement
l à gauche
c centré
r à droite
p{4cm} paragraphe de largeur fixe, avec retour à la ligne
\| trait vertical entre deux colonnes

Et dans le corps, & sépare les cellules, \\ termine la ligne — la même grammaire que les matrices du chapitre 3.

AstuceLes nombres s’alignent à droite

C’est la règle typographique : les unités doivent se superposer verticalement pour que l’œil compare les ordres de grandeur.

Le texte à gauche, les nombres à droite. Le centrage ne convient qu’aux en-têtes courts, jamais à une colonne de valeurs.

5.1.2 Un tableau présentable : booktabs

\usepackage{booktabs}       % dans le preambule

\begin{tabular}{lrr}
\toprule
Ville  & PIB & Chômage \\
\midrule
Tanger & 45,2 & 11,2 \\
Rabat  & 62,1 & 8,4 \\
Fès    & 38,7 & 13,1 \\
\bottomrule
\end{tabular}
ImportantPas de traits verticaux, pas de quadrillage

C’est la règle la plus enfreinte, et la plus visible.

Un tableau de qualité professionnelle comporte trois filets horizontaux — en haut, sous l’en-tête, en bas — et aucun trait vertical. C’est ce que produisent \toprule, \midrule et \bottomrule.

Ouvrez n’importe quelle revue d’économie : vous n’y trouverez pas un seul quadrillage. L’espace blanc sépare mieux que les traits, et le tableau respire.

booktabs produit en outre des filets d’épaisseurs différentes et ménage l’espace autour — ce qu’un \hline ordinaire ne fait pas.

5.1.3 Fusionner et grouper

\begin{tabular}{lrrr}
\toprule
        & \multicolumn{2}{c}{Estimations} & \\
\cmidrule(lr){2-3}
Variable & MCO & MCG & Écart \\
\midrule
PIB      & 1,24 & 1,19 & 0,05 \\
Chômage  & -0,87 & -0,91 & 0,04 \\
\bottomrule
\end{tabular}

\multicolumn{2}{c}{Estimations} fusionne deux colonnes et centre le titre. \cmidrule(lr){2-3} trace un filet partiel sous les seules colonnes 2 et 3 — plus élégant qu’un \midrule sur toute la largeur.

5.1.4 Aligner sur la virgule décimale

\usepackage{siunitx}        % dans le preambule

\begin{tabular}{l S[table-format=2.2]}
\toprule
Ville  & {PIB} \\
\midrule
Tanger & 45.20 \\
Rabat  & 162.15 \\
Fès    & 8.70 \\
\bottomrule
\end{tabular}

Le type de colonne S du paquet siunitx aligne les nombres sur la virgule, quel que soit le nombre de chiffres avant. Les en-têtes doivent alors être protégés par des accolades.

C’est le détail qui distingue un tableau soigné d’un tableau approximatif, surtout quand les ordres de grandeur diffèrent.

5.2 La figure

\usepackage{graphicx}       % dans le preambule

\includegraphics[width=0.8\textwidth]{figures/pib.pdf}
Option Effet
width=0.8\textwidth 80 % de la largeur du texte
height=6cm hauteur fixe
scale=0.5 facteur d’échelle
angle=90 rotation
AstuceToujours en proportion de \textwidth

width=0.8\textwidth s’adapte si vous changez les marges ou le format de page. width=12cm ne s’adapte pas.

Et ne mettez jamais d’extension dans le nom : écrivez {figures/pib} plutôt que {figures/pib.pdf}. LaTeX choisira le meilleur format disponible, et votre document restera compilable si vous passez du PNG au PDF.

ImportantPDF pour les graphiques, PNG pour les captures

Une figure produite par R, Python ou MATLAB doit être exportée en PDF : elle est alors vectorielle et reste nette à n’importe quel agrandissement.

Un PNG à 300 dpi paraît correct à l’écran et devient flou une fois imprimé. Réservez-le aux captures d’écran et aux photographies.

C’est le conseil donné aux chapitres graphiques des cours R, Python et MATLAB : il prend tout son sens ici.

5.3 Les flottants

C’est le point qui déroute tout le monde.

5.3.1 Pourquoi votre figure se déplace

\begin{figure}[htbp]
  \centering
  \includegraphics[width=0.8\textwidth]{figures/pib}
  \caption{Évolution du PIB régional, 2010--2023}
  \label{fig:pib}
\end{figure}
ImportantLaTeX place les flottants, pas vous

Un tabular ou un includegraphics nu s’insère exactement là où vous l’écrivez — au risque de laisser un grand blanc en bas de page.

Enveloppé dans figure ou table, il devient un flottant : LaTeX le déplace vers l’emplacement qui évite les trous, et il apparaîtra souvent en haut de la page suivante.

Ce n’est pas un défaut. C’est ce que font tous les livres : le texte reste continu, les illustrations se placent au mieux, et le lecteur les retrouve par leur numéro.

D’où la règle absolue : ne dites jamais « la figure ci-dessous ». Écrivez « la figure~ », qui reste juste où qu’elle atterrisse.

Les lettres [htbp] sont des suggestions, par ordre de préférence :

Lettre Signification
h here — ici si possible
t top — en haut d’une page
b bottom — en bas
p page — sur une page dédiée
! ignorer les contraintes esthétiques habituelles

[htbp] convient dans presque tous les cas. Si un flottant vous échappe vraiment, [H] du paquet float le cloue sur place — mais c’est un aveu d’échec qui produit souvent une page à moitié vide.

5.3.2 Un tableau flottant

\begin{table}[htbp]
  \centering
  \caption{Statistiques descriptives}
  \label{tab:desc}
  \begin{tabular}{lrrr}
    \toprule
    Variable & Moyenne & Écart-type & N \\
    \midrule
    PIB      & 43,8 & 12,4 & 48 \\
    Chômage  & 10,6 & 2,1  & 48 \\
    \bottomrule
  \end{tabular}
\end{table}
AvertissementLa légende d’un tableau se met au-dessus

Convention typographique constante : \caption avant le tabular pour un tableau, après l’includegraphics pour une figure.

La raison est pratique : on lit un tableau de haut en bas, et le titre doit précéder les données ; on regarde une figure d’abord, on lit sa légende ensuite.

Et \label se place toujours après \caption : c’est elle qui fixe le numéro. Placé avant, le renvoi pointerait vers la section, pas vers le tableau — une erreur silencieuse et déroutante.

5.4 Plusieurs figures côte à côte

\usepackage{subcaption}     % dans le preambule

\begin{figure}[htbp]
  \centering
  \begin{subfigure}{0.48\textwidth}
    \centering
    \includegraphics[width=\textwidth]{figures/pib}
    \caption{PIB régional}
    \label{fig:pib}
  \end{subfigure}
  \hfill
  \begin{subfigure}{0.48\textwidth}
    \centering
    \includegraphics[width=\textwidth]{figures/chomage}
    \caption{Taux de chômage}
    \label{fig:chomage}
  \end{subfigure}
  \caption{Deux indicateurs régionaux}
  \label{fig:deux}
\end{figure}

Chaque sous-figure a sa légende — (a), (b) — et l’ensemble la sienne. On renvoie à l’une par \ref{fig:pib}, ou aux deux par \ref{fig:deux}.

Les deux largeurs à 0,48 et le \hfill laissent 4 % d’espace entre elles. Dépasser 0,50 chacune ferait passer la seconde à la ligne.

5.5 Les tableaux longs

\usepackage{longtable}      % dans le preambule

\begin{longtable}{lrr}
\caption{Données complètes} \label{tab:complet} \\
\toprule
Ville & PIB & Chômage \\
\midrule
\endfirsthead

\multicolumn{3}{l}{\emph{suite de la page précédente}} \\
\toprule
Ville & PIB & Chômage \\
\midrule
\endhead

\midrule
\multicolumn{3}{r}{\emph{suite page suivante}} \\
\endfoot

\bottomrule
\endlastfoot

Tanger & 45,2 & 11,2 \\
% ... des dizaines de lignes ...
\end{longtable}

Un table ordinaire ne peut pas se couper : s’il dépasse une page, il disparaît ou déborde. longtable répète l’en-tête sur chaque page et ajoute les mentions de continuation.

Ce n’est pas un flottant : il se place où vous l’écrivez.

5.6 Produire ses tableaux automatiquement

AstuceNe recopiez jamais des résultats à la main

Recopier des coefficients d’une sortie de régression dans un tableau LaTeX est une source d’erreurs, et un travail à refaire à chaque nouvelle estimation.

Vos logiciels statistiques exportent directement du LaTeX :

Logiciel Paquet
R stargazer, modelsummary, xtable, kableExtra
Python pandas.DataFrame.to_latex(), statsmodels.summary2
Stata esttab, outreg2
library(modelsummary)
modelsummary(list(mod1, mod2), output = "tableau.tex")

Puis dans le document :

\input{tableau.tex}

Le tableau se régénère à chaque exécution du script, et le document reste toujours cohérent avec les données. C’est le principe de la recherche reproductible.

5.7 Un exemple complet

\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{graphicx, booktabs}
\usepackage[margin=2.5cm]{geometry}
\usepackage[hidelinks]{hyperref}

\begin{document}

\section{Résultats}

Le tableau~\ref{tab:desc} présente les statistiques descriptives.

\begin{table}[htbp]
  \centering
  \caption{Statistiques descriptives}
  \label{tab:desc}
  \begin{tabular}{lrrr}
    \toprule
    Variable & Moyenne & Écart-type & N \\
    \midrule
    PIB      & 43,8 & 12,4 & 48 \\
    Chômage  & 10,6 & 2,1  & 48 \\
    \bottomrule
  \end{tabular}
\end{table}

La relation apparaît clairement sur la figure~\ref{fig:nuage}.

\begin{figure}[htbp]
  \centering
  \includegraphics[width=0.75\textwidth]{figures/nuage}
  \caption{Chômage et croissance, 2010--2023}
  \label{fig:nuage}
\end{figure}

\end{document}

À vous

Composez un tableau de régression à deux modèles, avec les écarts-types entre parenthèses sous les coefficients, et une note de bas de tableau.

\begin{table}[htbp]
  \centering
  \caption{Déterminants du taux de chômage régional}
  \label{tab:reg}
  \begin{tabular}{lcc}
    \toprule
                       & \multicolumn{2}{c}{Variable dépendante : $u_t$} \\
    \cmidrule(lr){2-3}
                       & (1) & (2) \\
    \midrule
    Croissance du PIB  & $-0{,}872^{***}$ & $-0{,}914^{***}$ \\
                       & $(0{,}164)$      & $(0{,}158)$ \\[4pt]
    Taux d'activité    &                  & $0{,}241^{*}$ \\
                       &                  & $(0{,}127)$ \\[4pt]
    Constante          & $3{,}120^{***}$  & $2{,}845^{***}$ \\
                       & $(0{,}402)$      & $(0{,}438)$ \\
    \midrule
    $R^2$              & 0{,}486 & 0{,}531 \\
    Observations       & 48      & 48 \\
    \bottomrule
    \multicolumn{3}{l}{\footnotesize Écarts-types entre parenthèses.} \\
    \multicolumn{3}{l}{\footnotesize $^{*}p<0{,}1$ ; $^{**}p<0{,}05$ ; $^{***}p<0{,}01$} \\
  \end{tabular}
\end{table}

Trois points de méthode :

Les nombres sont écrits 0{,}872 avec la virgule entre accolades. En mode mathématique, une virgule nue est un séparateur et reçoit une espace après elle : 0,872 s’afficherait « 0, 872 ». Les accolades la neutralisent.

\\[4pt] sépare chaque bloc coefficient/écart-type, sans quoi le tableau paraît compact et se lit mal.

Les notes de bas de tableau passent par un \multicolumn sur toute la largeur, en \footnotesize.

Et rappelez-vous la section 5.6 : ce tableau devrait être produit par votre logiciel, pas tapé à la main.

Ce qu’il faut retenir

Écriture Effet
\begin{tabular}{lrr} tableau — une lettre par colonne
& et \\ séparer les cellules, terminer la ligne
\toprule, \midrule, \bottomrule booktabs — jamais de traits verticaux
\multicolumn{2}{c}{...} fusionner des colonnes
\cmidrule(lr){2-3} filet partiel
colonne S (siunitx) aligner sur la virgule décimale
\includegraphics[width=0.8\textwidth]{fig} image — sans extension
PDF pour les graphiques vectoriel, net à l’impression
figure, table flottants — LaTeX décide de l’emplacement
[htbp] suggestions de placement
\caption au-dessus d’un tableau et au-dessous d’une figure
\label après \caption sinon le renvoi est faux
jamais « ci-dessous » toujours \ref{...}
subcaption plusieurs figures côte à côte
longtable tableau sur plusieurs pages
stargazer, to_latex() produire ses tableaux automatiquement

Le chapitre suivant traite de ce qui rend LaTeX indispensable sur un long document : les renvois et la bibliographie.