— Et bien non on ne fera pas de camemberts.
— Ben pourquoi ?
— Parce que c’est moche et ça sert à rien.
Le but de ce tutoriel est d’apprendre à réaliser des graphiques à l’aide de TikZ et PGFPLOTS. Pourquoi ne pas utiliser un logiciel spécialisé comme un tableur ? Il y a plusieurs raisons :
Donc pour des graphiques parfaitement intégrés à ton document, utilise le couple TikZ et PGFPLOTS, en plus ce n’est guère plus compliquer à utiliser qu’un tableur.
Dans cette fiche on va se limiter à des opérations de base, on se contentera de graphique simple avec un minimum de réglages.
Pour illustrer notre propos nous allons utiliser les précipitations et les températures relevées dans la région lilloise pour le mois de décembre 2004.
Les deux premières choses à faire c’est de charger les packages tikz et pgfplots :
\usepackage{tikz} \usepackage{pgfplots}
Si tu es sous ConTeX :
\usemodule[pgfplots]
Le module TikZ est chargé automatiquement.
Maintenant nous allons commencer notre graphique. Tu ouvres un environnement TikZ :
\begin{tikzpicture} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \stoptikzpicture
Pour être lisible un graphique se doit d’avoir des axes, ce que tu vas réaliser grâce à l’environnement axis. Comme tu ne lui as encore précisé aucune donnée PGFPLOTS affiche un truc par défaut avec des coordonnées comprise entre 0 et 1 :
\begin{tikzpicture} \begin{axis} \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis \stopaxis \stoptikzpicture
Évidement l’environnement axis accepte des options.
Attention les options sont séparées par des virgules.
Tu peux jouer sur la taille du graphique :
\begin{tikzpicture} \begin{axis}[height=8cm,width=5cm] \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis[height=8cm,width=5cm] \stopaxis \stoptikzpicture
d’autre exemples :
\begin{tikzpicture} \begin{axis}[scale=0.5] \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis[scale=0.5] \stopaxis \stoptikzpicture
\begin{tikzpicture} \begin{axis}[xscale=0.7, yscale=0.4] \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis[xscale=0.7, yscale=0.4] \stopaxis \stoptikzpicture
Je te rappelle que tu peux jouer aussi avec les options liées à tikzpicture pour adapter ton graphique à ton document :
\begin{tikzpicture}[scale=0.5] . . .
Sous ConTeXt :
\starttikzpicture[scale=0.5] . . .
\begin{tikzpicture} \begin{axis}[axis x line=bottom,axis y line = left] \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis[axis x line=bottom,axis y line = left] \stopaxis \stoptikzpicture
Dans l’autre sens :
\begin{tikzpicture} \begin{axis}[axis x line=top,axis y line = right] \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis[axis x line=top,axis y line = right] \stopaxis \stoptikzpicture
\begin{tikzpicture} \begin{axis}[grid=major] \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis[grid=major] \stopaxis \stoptikzpicture
\begin{tikzpicture} \begin{axis}[xmajorgrids] \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis[xmajorgrids] \stopaxis \stoptikzpicture
\begin{tikzpicture} \begin{axis}[ymajorgrids] \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis[ymajorgrids] \stopaxis \stoptikzpicture
\begin{tikzpicture} \begin{axis}[xlabel={L’axe des x},ylabel={L’axe des y}] \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis[xlabel={L’axe des x},ylabel={L’axe des y}] \stopaxis \stoptikzpicture
\begin{tikzpicture} \begin{axis}[title={Le titre du graphique}] \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis[title={Le titre du graphique}] \stopaxis \stoptikzpicture
\begin{tikzpicture} \begin{axis} \addplot coordinates { (0,2.6) (1,2.5) (2,2.6) (3,2.3) (4,2.2) (5,2.3) (6,3.1) (7,3.3) (8,3.3) (9,3.8) (10,3.8) (11,4.2) (12,4.8) (13,5) (14,5.7) (15,6.2) (16,6.8) (17,7.1) (18,7.6) (19,7.7) (20,7.2) (21,6) (22,5.6) (23,6.3)}; \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis \addplot coordinates { (0,2.6) (1,2.5) (2,2.6) (3,2.3) (4,2.2) (5,2.3) (6,3.1) (7,3.3) (8,3.3) (9,3.8) (10,3.8) (11,4.2) (12,4.8) (13,5) (14,5.7) (15,6.2) (16,6.8) (17,7.1) (18,7.6) (19,7.7) (20,7.2) (21,6) (22,5.6) (23,6.3)}; \stopaxis \stoptikzpicture
Le système de coordonnées est le même que celui de TikZ, voir TikZ, le système de coordonnées et les chemins (path). Je te rappelle que les décimales sont notées à l’anglo-saxonne avec un point. Comme toutes commande TikZ, n’oublie pas le ; à la fin \addplot coordinates {. . .};
Avec un titre et des labels :
\begin{tikzpicture} \begin{axis}[xlabel={heures},ylabel={\degres C}, title={Températures relevées à Lille le 16 décembre 2004}] \addplot coordinates { (0,2.6) (1,2.5) (2,2.6) (3,2.3) (4,2.2) (5,2.3) (6,3.1) (7,3.3) (8,3.3) (9,3.8) (10,3.8) (11,4.2) (12,4.8) (13,5) (14,5.7) (15,6.2) (16,6.8) (17,7.1) (18,7.6) (19,7.7) (20,7.2) (21,6) (22,5.6) (23,6.3)}; \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis[xlabel={heures},ylabel={\textcelsius}, title={Températures relevées à Lille le 16 décembre 2004}] \addplot coordinates { (0,2.6) (1,2.5) (2,2.6) (3,2.3) (4,2.2) (5,2.3) (6,3.1) (7,3.3) (8,3.3) (9,3.8) (10,3.8) (11,4.2) (12,4.8) (13,5) (14,5.7) (15,6.2) (16,6.8) (17,7.1) (18,7.6) (19,7.7) (20,7.2) (21,6) (22,5.6) (23,6.3)}; \stopaxis \stoptikzpicture
ConTeXt à la commande \textcelsius pour écrire °C (et \textdegree pour uniquement le °)alors que sous LaTeX il faut écrire \degres C
Alors il n’est pas joli notre graphique et pas si compliqué à faire. Bon il y a quand même un petit problème. Si la 25e heure et très cinématographique, elle n’a rien de scientifique. Il faut donc donner à PGFPLOTS des limites.
Tu les fixes par xmin, xmax, ymin, ymax.
\begin{tikzpicture}
\begin{axis}[xlabel={heures},ylabel={\degres C}, title={Températures relevées à Lille le 16 décembre 2004}, xmax=24] \addplot coordinates { (0,2.6) (1,2.5) (2,2.6) (3,2.3) (4,2.2) (5,2.3) (6,3.1) (7,3.3) (8,3.3) (9,3.8) (10,3.8) (11,4.2) (12,4.8) (13,5) (14,5.7) (15,6.2) (16,6.8) (17,7.1) (18,7.6) (19,7.7) (20,7.2) (21,6) (22,5.6) (23,6.3)}; \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis[xlabel={heures},ylabel={\textcelsius}, title={Températures relevées à Lille le 16 décembre 2004}, xmax=24] \addplot coordinates { (0,2.6) (1,2.5) (2,2.6) (3,2.3) (4,2.2) (5,2.3) (6,3.1) (7,3.3) (8,3.3) (9,3.8) (10,3.8) (11,4.2) (12,4.8) (13,5) (14,5.7) (15,6.2) (16,6.8) (17,7.1) (18,7.6) (19,7.7) (20,7.2) (21,6) (22,5.6) (23,6.3)}; \stopaxis \stoptikzpicture
Tu as remarqué que PGFPLOTS ajoute des marges entre les axes et le graphique. Si tu veux les supprimer tu utilises l’option enlarge x limits=false. Note que dans ce cas tu n’as plus besoin de mettre xmax=24, puisque les axes s’arrête aux limites du graphique. Il existe également un enlarge y limits=false, pas très utile dans notre exemple.
\begin{tikzpicture}
\begin{axis}[enlarge x limits=false, xlabel={heures}, ylabel={\degres C}, title={Températures relevées à Lille le 16 décembre 2004}] \addplot coordinates { (0,2.6) (1,2.5) (2,2.6) (3,2.3) (4,2.2) (5,2.3) (6,3.1) (7,3.3) (8,3.3) (9,3.8) (10,3.8) (11,4.2) (12,4.8) (13,5) (14,5.7) (15,6.2) (16,6.8) (17,7.1) (18,7.6) (19,7.7) (20,7.2) (21,6) (22,5.6) (23,6.3)}; \end{axis} \end{tikzpicture}
Sous ConTeXt :
\starttikzpicture \startaxis[enlarge x limits=false, xlabel={heures}, ylabel={\textcelsius}, title={Températures relevées à Lille le 16 décembre 2004}] \addplot coordinates { (0,2.6) (1,2.5) (2,2.6) (3,2.3) (4,2.2) (5,2.3) (6,3.1) (7,3.3) (8,3.3) (9,3.8) (10,3.8) (11,4.2) (12,4.8) (13,5) (14,5.7) (15,6.2) (16,6.8) (17,7.1) (18,7.6) (19,7.7) (20,7.2) (21,6) (22,5.6) (23,6.3)}; \stopaxis \stoptikzpicture
Sympa cette couleur bleue avec les petits ronds comme marqueur, mais comment on fait pour changer ? Deux possibilités, soit tu veux tout changer, soit tu veux ajouter une modification, comme par exemple supprimer les marqueurs tout en gardant la couleur bleue. Dans le premier cas tu utilises \addplot[options] et dans le deuxième \addplot+[options]. Voici 3 exemples du même graphique :
\addplot[]
\addplot[mark=none]
\addplot+[mark=none]