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.
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.
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}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 |
\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.
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}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}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
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.