> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/fr/specifique-a-un-domaine/08-pgfplots-package.md).

# package Pgfplots

## Introduction

Le `pgfplots` package, qui est basé sur [`TikZ`](/latex/fr/figures-et-tableaux/05-tikz-package.md), est un puissant outil de visualisation et idéal pour créer des graphiques scientifiques/techniques. L'idée de base est que vous fournissez les données/formule d'entrée et `pgfplots` fait le reste.

### Le préambule du document

Pour utiliser l' `pgfplots` package dans votre document, ajoutez la ligne suivante à votre préambule :

`\usepackage{pgfplots}`

Vous pouvez également configurer le comportement de `pgfplots` dans le préambule du document. Par exemple, pour modifier la taille de chaque tracé et garantir la compatibilité ascendante (recommandé), ajoutez la ligne suivante :

`\pgfplotsset{width=10cm,compat=1.9}`

Cela modifie la taille de chaque `pgfplot` figure à 10 centimètres, ce qui est énorme ; vous pouvez utiliser d'autres unités (pt, mm, in). Le *compat* paramètre permet au code de fonctionner avec la version 1.9 du package ou ultérieure.

### Temps de compilation (bref contexte)

Lorsque le moteur TeX original a été conçu/écrit, il y a plus de 40 ans, il n'était pas conçu pour *directe* production de graphiques — ceux-ci devaient être des fichiers créés par des programmes externes (par ex. MetaPost) et importés dans le document composé. L'avènement de pdfTeX — qui est étroitement basé sur le logiciel TeX original — a apporté la possibilité de créer des graphiques *directement* en utilisant les nouvelles commandes intégrées du langage TeX de pdfTeX (appelées *primitives*) qui peuvent produire les opérateurs/données PDF requis pour générer des graphiques. La création de pdfTeX a conduit au développement de packages graphiques LaTeX sophistiqués, tels que `TikZ`, `pgfplots` etc., capables de produire des graphiques codés à l'aide de commandes LaTeX de haut niveau.

Cependant, en coulisses et au plus profond du moteur pdfTeX (et d'autres moteurs), ces commandes graphiques LaTeX de haut niveau doivent être traitées en les « reconvertissant » en commandes de bas niveau du moteur pdfTeX (primitives) qui génèrent effectivement (en sortie) les opérateurs PDF nécessaires pour produire la ou les figures résultantes. Ce traitement des commandes graphiques LaTeX — expansion et exécution des primitives — peut prendre un temps non négligeable. Même une seule commande graphique LaTeX de haut niveau, avec ses données correspondantes, peut nécessiter l'exécution répétée de *de nombreuses* commandes de bas niveau du moteur TeX (primitives). Du point de vue de l'utilisateur final, les documents contenant plusieurs `pgfplots` figures et/ou des graphiques très complexes peuvent prendre un temps considérable à rendre (compiler).

### Réduire le temps de compilation

Pour augmenter la vitesse de compilation du document, vous pouvez configurer le `pgfplots` package pour exporter les figures dans des fichiers PDF séparés, puis les importer dans le document : compilez une fois, puis réutilisez les figures. Pour cela, ajoutez le code ci-dessous au préambule :

```
\usepgfplotslibrary{external}
\tikzexternalize
```

Voir [cet article d'aide](/latex/fr/questions-et-reponses/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md) pour plus de détails sur la configuration de tikz-externalization dans votre projet Overleaf.

## Exemple de base (avec externalisation des figures)

```latex
\documentclass{article}
\usepackage[margin=0.25in]{geometry}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.9}

% Nous allons externaliser les figures
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

Le premier exemple montre des expressions mathématiques en 2D et en 3D tracées côte à côte.

%Ici commence le tracé 2D
\begin{tikzpicture}
\begin{axis}
\addplot[color=red]{exp(x)};
\end{axis}
\end{tikzpicture}
%Ici se termine le tracé 2D
\hskip 5pt
%Ici commence le tracé 3D
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
{exp(-x^2-y^2)*x};
\end{axis}
\end{tikzpicture}
%Ici se termine le tracé 3D

\end{document}
```

[Ouvrez cet `pgfplots` exemple dans Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.25in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%0A%25+We+will+externalize+the+figures%0A%5Cusepgfplotslibrary%7Bexternal%7D%0A%5Ctikzexternalize%0A%0A%5Cbegin%7Bdocument%7D%0A%0AFirst+example+is+2D+and+3D+math+expressions+plotted+side-by-side.%0A%0A%25Here+begins+the+2D+plot%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot%5Bcolor%3Dred%5D%7Bexp%28x%29%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%25Here+ends+the+2D+plot%0A%5Chskip+5pt%0A%25Here+begins+the+3D+plot%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot3%5B%0A++++surf%2C%0A%5D%0A%7Bexp%28-x%5E2-y%5E2%29%2Ax%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%25Here+ends+the+3D+plot%0A%0A%5Cend%7Bdocument%7D)

L'image suivante montre le résultat produit par le code ci-dessus :

![Plgplotsex1OLV2.png](/files/e760efee6f4f1baac8bf695ed8e3c550b19dc094)

### Explication du code

Parce que `pgfplots` est basé sur `tikz` le tracé doit être dans un `tikzpicture` environnement. Ensuite, la déclaration de l'environnement `\begin{axis}`, `\end{axis}` définira l'échelle correcte pour le tracé — consultez le [Guide de référence](#reference-guide) pour les autres environnements d'axe.

Pour ajouter un tracé réel, la commande `\addplot[color=red]{log(x)};` est utilisée. À l'intérieur des crochets, `[...]`, certaines options peuvent être passées ; ici, nous définissons la `color` du tracé à `red`. Les crochets sont obligatoires ; si aucune option n'est passée, laissez un espace vide entre eux. À l'intérieur des accolades, vous mettez la fonction à tracer. Il est important de se souvenir que cette commande doit se terminer par un point-virgule (;).

Pour placer un deuxième tracé à côté du premier, déclarez un nouvel `tikzpicture` environnement. N'insérez pas de nouvelle ligne, mais un petit espace vide ; dans ce cas, `hskip 10pt` insérera un espace vide de 10 pt de largeur.

Le reste de la syntaxe est identique, sauf pour le `\addplot3 [surf,]{exp(-x^2-y^2)*x};`. Cela ajoutera un tracé 3D, et l'option `surf` à l'intérieur des crochets indique qu'il s'agit d'un tracé de surface. La fonction à tracer doit être placée entre accolades. Encore une fois, n'oubliez pas de mettre un point-virgule (;) à la fin de la commande.

**Remarque**: Il est recommandé, comme bonne pratique, d'indenter le code — voir le deuxième tracé dans l'exemple ci-dessus — et d'ajouter une virgule (,) à la fin de chaque option passée à `\addplot`. De cette façon, le code est plus lisible et il est plus facile d'ajouter d'autres options si nécessaire.

## Tracés 2D

`pgfplots`Les fonctionnalités de tracé 2D sont vastes — et vous pouvez personnaliser vos tracés selon vos besoins. Néanmoins, les options par défaut donnent généralement de très bons résultats, donc tout ce que vous avez à faire est de fournir les données et LaTeX fera le reste.

### Tracer des expressions mathématiques

Voici un exemple :

```latex
\begin{tikzpicture}
\begin{axis}[
    axis lines = left,
    xlabel = \(x\),
    ylabel = {\(f(x)\)},
]
%Ci-dessous, la parabole rouge est définie
\addplot [
    domain=-10:10,
    samples=100,
    color=red,
]
{x^2 - 2*x - 1};
\addlegendentry{\(x^2 - 2x - 1\)}
%Ici, la parabole bleue est définie
\addplot [
    domain=-10:10,
    samples=100,
    color=blue,
    ]
    {x^2 + 2*x + 1};
\addlegendentry{\(x^2 + 2x + 1\)}

\end{axis}
\end{tikzpicture}
```

[Ouvrez cet `pgfplots` exemple dans Overleaf.](https://www.overleaf.com/docs?engine=\&snip_name=pgfplots+example+2\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.25in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++axis+lines+%3D+left%2C%0A++++xlabel+%3D+%5C%28x%5C%29%2C%0A++++ylabel+%3D+%7B%5C%28f%28x%29%5C%29%7D%2C%0A%5D%0A%25Below+the+red+parabola+is+defined%0A%5Caddplot+%5B%0A++++domain%3D-10%3A10%2C+%0A++++samples%3D100%2C+%0A++++color%3Dred%2C%0A%5D%0A%7Bx%5E2+-+2%2Ax+-+1%7D%3B%0A%5Caddlegendentry%7B%5C%28x%5E2+-+2x+-+1%5C%29%7D%0A%25Here+the+blue+parabola+is+defined%0A%5Caddplot+%5B%0A++++domain%3D-10%3A10%2C+%0A++++samples%3D100%2C+%0A++++color%3Dblue%2C%0A++++%5D%0A++++%7Bx%5E2+%2B+2%2Ax+%2B+1%7D%3B%0A%5Caddlegendentry%7B%5C%28x%5E2+%2B+2x+%2B+1%5C%29%7D%0A%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Le résultat de ce code est montré dans l'image ci-dessous — le préambule du document LaTeX est ajouté automatiquement lorsque vous ouvrez le lien :

![Plgplotsex2.png](/files/0217df382ba6764aa5e1e29db6fde00cfaaffc71)

#### Explication du code

Analysons les nouvelles commandes ligne par ligne :

**axis lines = left.**

Cela placera les axes uniquement sur les côtés gauche et inférieur du tracé, au lieu de la boîte par défaut. Davantage d'options de personnalisation dans le guide de référence.

**xlabel = (x) et ylabel = {(f(x))}.**

Des noms de paramètres explicites : ils vous permettront d'ajouter une étiquette sur l'axe horizontal et vertical. Notez la valeur de ylabel entre accolades ; ces accolades indiquent à pgfplots comment regrouper le texte. xlabel aurait aussi pu avoir des accolades. C'est utile pour les étiquettes complexes qui pourraient embrouiller pgfplots.

**\addplot.**

Cela ajoutera un tracé à l'axe ; l'utilisation générale a été décrite dans l'introduction. Il y a deux nouveaux paramètres dans cet exemple.

**domain=-10:10.**

Cela établit l'intervalle des valeurs de x.

**samples=100.**

Détermine le nombre de points dans l'intervalle défini par domain. Plus la valeur de samples est élevée, plus le graphe obtenu est précis, mais plus le rendu prendra de temps.

**\addlegendentry{(x^2 - 2x - 1)}.**

Cela ajoute la légende pour identifier la fonction x^2 - 2x - 1.

Pour ajouter un autre graphe au tracé, il suffit d'écrire une nouvelle `\addplot` entrée.

### Tracer à partir de données

La recherche scientifique produit souvent des données qui doivent être analysées. L'exemple suivant montre comment tracer des données avec *pgfplots*:

```latex
Tracer à partir de données :

\begin{tikzpicture}
\begin{axis}[
    title={Dépendance en température de la solubilité de CuSO\(_4\cdot\)5H\(_2\)O},
    xlabel={Température [\textcelsius]},
    ylabel={Solubilité [g pour 100 g d'eau]},
    xmin=0, xmax=100,
    ymin=0, ymax=120,
    xtick={0,20,40,60,80,100},
    ytick={0,20,40,60,80,100,120},
    legend pos=north west,
    ymajorgrids=true,
    grid style=dashed,
]

\addplot[
    color=blue,
    mark=square,
    ]
    coordinates {
    (0,23.1)(10,27.5)(20,32)(30,37.8)(40,44.6)(60,61.8)(80,83.8)(100,114)
    };
    \legend{CuSO\(_4\cdot\)5H\(_2\)O}

\end{axis}
\end{tikzpicture}
```

[Ouvrez cet `pgfplots` exemple dans Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+example+3\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Btextcomp%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0APlotting+from+data%3A%0A%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++title%3D%7BTemperature+dependence+of+CuSO%5C%28_4%5Ccdot%5C%295H%5C%28_2%5C%29O+solubility%7D%2C%0A++++xlabel%3D%7BTemperature+%5B%5Ctextcelsius%5D%7D%2C%0A++++ylabel%3D%7BSolubility+%5Bg+per+100+g+water%5D%7D%2C%0A++++xmin%3D0%2C+xmax%3D100%2C%0A++++ymin%3D0%2C+ymax%3D120%2C%0A++++xtick%3D%7B0%2C20%2C40%2C60%2C80%2C100%7D%2C%0A++++ytick%3D%7B0%2C20%2C40%2C60%2C80%2C100%2C120%7D%2C%0A++++legend+pos%3Dnorth+west%2C%0A++++ymajorgrids%3Dtrue%2C%0A++++grid+style%3Ddashed%2C%0A%5D%0A%0A%5Caddplot%5B%0A++++color%3Dblue%2C%0A++++mark%3Dsquare%2C%0A++++%5D%0A++++coordinates+%7B%0A++++%280%2C23.1%29%2810%2C27.5%29%2820%2C32%29%2830%2C37.8%29%2840%2C44.6%29%2860%2C61.8%29%2880%2C83.8%29%28100%2C114%29%0A++++%7D%3B%0A++++%5Clegend%7BCuSO%5C%28_4%5Ccdot%5C%295H%5C%28_2%5C%29O%7D%0A++++%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Le résultat de ce code est montré dans l'image ci-dessous — le préambule du document LaTeX est ajouté automatiquement lorsque vous ouvrez le lien :

![Plgplotsex3.png](/files/b995458830c9b2bb70d9661062fe341ade628057)

#### Explication du code

Il y a ici quelques nouvelles commandes et paramètres :

**title={Dépendance en température de la solubilité de CuSO(\_4\cdot)5H(\_2)O}.**

Comme on pouvait s'y attendre, cela attribue un titre à la figure. Le titre sera affiché au-dessus du tracé.

**xmin=0, xmax=100, ymin=0, ymax=120.**

Bornes minimales et maximales des axes x et y.

**xtick={0,20,40,60,80,100}, ytick={0,20,40,60,80,100,120}.**

Points où les marques sont placées. Si la valeur est vide, les graduations sont définies automatiquement.

**legend pos=north west.**

Position de la boîte de légende. Consultez le guide de référence pour plus d'options.

**ymajorgrids=true.**

Cela active/désactive les lignes de grille aux positions des graduations sur l'axe y. Utilisez xmajorgrids pour activer les lignes de grille sur l'axe x.

**grid style=dashed.**

Explicite. Pour afficher des lignes de grille en pointillés.

**mark=square.**

Cela dessine une marque carrée à chaque point du tableau de coordonnées. Chaque marque sera reliée à la suivante par une ligne droite.

**coordinates {(0,23.1)(10,27.5)(20,32)...}**

Coordonnées des points à tracer. Ce sont les données que vous souhaitez analyser graphiquement.

Si les données sont dans un fichier, ce qui est le cas la plupart du temps ; au lieu des commandes `\addplot` et `coordinates` vous devriez utiliser `\addplot table {file_with_the_data.dat}`, le reste des options est valide dans cet environnement.

### Nuages de points

Les nuages de points servent à représenter l'information à l'aide de marques et sont couramment utilisés lors du calcul de régressions statistiques. Dans cet exemple, nous allons créer un nuage de points à partir de données contenues dans un fichier appelé `scattered_example.dat`, dans lequel les données ressemblent à ceci :

```
GPA  ma  ve  co   un
3.45 643 589 3.76 3.52
2.78 558 512 2.87 2.91
2.52 583 503 2.54 2.4
3.67 685 602 3.83 3.47
3.24 592 538 3.29 3.47
2.1 562 486 2.64 2.37
...
```

Notre nuage de points utilise les deux premières colonnes des données :

```latex
\begin{tikzpicture}
\begin{axis}[
    enlargelimits=false,
]
\addplot+[
    only marks,
    scatter,
    mark=halfcircle*,
    mark size=2.9pt]
table[meta=ma]
{scattered_example.dat};
\end{axis}
\end{tikzpicture}
```

![Scattered.png](/files/5ee4a6adc44299176d4309af033b1db4132c6724)

[Ouvrez un exemple de projet de nuage de points dans Overleaf (contient le fichier de données `scattered_example.dat`).](https://www.overleaf.com/project/new/template/20099?id=68399290\&templateName=Scatter+plot+example\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

#### Explication du code

Les paramètres passés aux `axis` et `addplot` environnements peuvent également être utilisés dans un tracé de données, sauf pour `scatter`. Ci-dessous, la description du code :

**enlarge limits=false**

Cela rétrécira les axes de sorte que les points aux valeurs maximale et minimale se trouvent au bord du tracé.

**only marks**

Très explicite, cela placera une marque sur chaque point.

**scatter**

Lorsque scatter est utilisé, les points sont colorés en fonction d'une valeur ; la couleur est donnée par le paramètre meta expliqué ci-dessous.

**mark=halfcircle**\*

Le type de marque à utiliser pour chaque point ; consultez le guide de référence pour une liste des valeurs possibles.

**mark size=2.9pt**

La taille de chaque marque ; différentes unités peuvent être utilisées.

**table\[meta=ma]{scattered\_example.dat};**

Ici, la commande table indique à LaTeX que les données à tracer se trouvent dans un fichier. Le paramètre meta=ma est passé pour choisir la colonne qui détermine la couleur de chaque point. Entre accolades se trouve le nom du fichier de données.

### Diagrammes en barres

Les diagrammes en barres (également appelés diagrammes en barres et bar plots) servent à afficher des données collectées, principalement des données statistiques sur une population d'un certain type. Les bar plots dans `pgfplots` sont hautement configurables, mais ici nous allons montrer un exemple simple :

```latex
\begin{tikzpicture}
\begin{axis}[
	x tick label style={
		/pgf/number format/1000 sep=},
	ylabel=Année,
	enlargelimits=0.05,
	legend style={at={(0.5,-0.1)},
	anchor=north,legend columns=-1},
	ybar interval=0.7,
]
\addplot
	coordinates {(2012,408184) (2011,408348)
		 (2010,414870) (2009,412156)};
\addplot
	coordinates {(2012,388950) (2011,393007)
		(2010,398449) (2009,395972)};
\legend{Hommes,Femmes}
\end{axis}
\end{tikzpicture}
```

[Ouvrez cet `pgfplots` exemple de code de diagramme en barres dans Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+bar+chart+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Btextcomp%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A%09x+tick+label+style%3D%7B%0A%09%09%2Fpgf%2Fnumber+format%2F1000+sep%3D%7D%2C%0A%09ylabel%3DYear%2C%0A%09enlargelimits%3D0.05%2C%0A%09legend+style%3D%7Bat%3D%7B%280.5%2C-0.1%29%7D%2C%0A%09anchor%3Dnorth%2Clegend+columns%3D-1%7D%2C%0A%09ybar+interval%3D0.7%2C%0A%5D%0A%5Caddplot+%0A%09coordinates+%7B%282012%2C408184%29+%282011%2C408348%29%0A%09%09+%282010%2C414870%29+%282009%2C412156%29%7D%3B%0A%5Caddplot+%0A%09coordinates+%7B%282012%2C388950%29+%282011%2C393007%29+%0A%09%09%282010%2C398449%29+%282009%2C395972%29%7D%3B%0A%5Clegend%7BMen%2CWomen%7D%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Le résultat de ce code est montré dans l'image ci-dessous — le préambule du document LaTeX est ajouté automatiquement lorsque vous ouvrez le lien :

![Barchartsexample.png](/files/1dc548192afe32d9b493e371910abe0b7d3de1a6)

#### Explication du code

La figure commence par la déclaration ([précédemment expliquée](#introduction)) de l' `tikzpicture` et `axis` environnements, mais la `axis` déclaration comporte un certain nombre de nouveaux paramètres :

**x tick label style={/pgf/number format/1000 sep=}**

Ce morceau de code définit un style complet pour le tracé. Avec ce style, vous pouvez inclure plusieurs commandes \addplot dans cet environnement axis ; elles s'intégreront et s'harmoniseront bien ensemble sans autre ajustement (le paramètre ybar décrit ci-dessous est obligatoire pour que cela fonctionne).

**enlargelimits=0.05.**

Agrandir les limites dans un diagramme en barres est nécessaire, car ce type de tracé nécessite souvent un peu d'espace supplémentaire au-dessus de la barre pour un meilleur rendu et/ou pour ajouter une étiquette. Le nombre 0.05 est alors relatif à la hauteur totale du tracé.

**legend style={at={(0.5,-0.2)}, anchor=north,legend columns=-1}**

Encore une fois, cela fonctionnera très bien la plupart du temps. Au besoin, modifiez la valeur -0.2 pour placer la légende plus près ou plus loin de l'axe x.

**ybar interval=0.7,**

Épaisseur de chaque barre. 1 signifie que les barres seront côte à côte sans espace, et 0 signifie qu'il n'y aura pas de barres, mais seulement des lignes verticales.

Le `coordinates` dans ce type de tracé déterminent le point de base de la barre et sa hauteur.

Les étiquettes sur l'axe y afficheront jusqu'à 4 chiffres. Si les nombres avec lesquels vous travaillez sont supérieurs à 9999 `pgfplots` utilisera la même notation que dans l'exemple.

## Tracés 3D

`pgfplots` dispose des capacités de tracé 3D que l'on peut attendre d'un logiciel de tracé.

### Tracer des expressions mathématiques

Il existe un simple exemple à ce sujet dans le [introduction](#introduction), travaillons sur quelque chose d'un peu plus complexe :

```latex
\begin{tikzpicture}
\begin{axis}[
    title=Exemple utilisant le paramètre mesh,
    hide axis,
    colormap/cool,
]
\addplot3[
    mesh,
    samples=50,
    domain=-8:8,
]
{sin(deg(sqrt(x^2+y^2)))/sqrt(x^2+y^2)};
\addlegendentry{\(\frac{sin(r)}{r}\)}
\end{axis}
\end{tikzpicture}
```

[Ouvrez cet `pgfplots` Exemple 3D dans Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+3D+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++title%3DExample+using+the+mesh+parameter%2C%0A++++hide+axis%2C%0A++++colormap%2Fcool%2C%0A%5D%0A%5Caddplot3%5B%0A++++mesh%2C%0A++++samples%3D50%2C%0A++++domain%3D-8%3A8%2C%0A%5D%0A%7Bsin%28deg%28sqrt%28x%5E2%2By%5E2%29%29%29%2Fsqrt%28x%5E2%2By%5E2%29%7D%3B%0A%5Caddlegendentry%7B%5C%28%5Cfrac%7Bsin%28r%29%7D%7Br%7D%5C%29%7D%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Le résultat de ce code est montré dans l'image ci-dessous — le préambule du document LaTeX est ajouté automatiquement lorsque vous ouvrez le lien :

![Pgfplots3dexample.png](/files/fa93fb77ec36e8830d89575ea5067f093d6b84de)

#### Explication du code

La plupart des commandes ici ont déjà été expliquées, mais il y a 3 nouvelles choses :

**hide axis**

Cette option dans l'environnement axis est explicite : l'axe ne sera pas affiché.

**colormap/cool**

C'est le jeu de couleurs à utiliser pour le tracé. Consultez le guide de référence pour d'autres jeux de couleurs.

**mesh**

Cette option est également explicite ; consultez aussi le paramètre surf dans l'exemple introductif.

**Remarque**: Lorsqu'on travaille avec des fonctions trigonométriques `pgfplots` utilise les degrés comme unités par défaut ; si l'angle est en radians (comme dans cet exemple), vous devez utiliser la `deg` fonction pour convertir en degrés.

### Tracés de contours

Dans `pgfplots` il est possible de tracer des courbes de niveau, mais les données doivent être pré-calculées par un programme externe. Voyons un exemple :

```latex
\begin{tikzpicture}
\begin{axis}
[
    title={Tracé de contours, vue du dessus},
    view={0}{90}
]
\addplot3[
    contour gnuplot={levels={0.8, 0.4, 0.2, -0.2}}
]
{sin(deg(sqrt(x^2+y^2)))/sqrt(x^2+y^2)};
\end{axis}
\end{tikzpicture}
```

[Ouvrez cet `pgfplots` exemple de tracé de contours dans Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+contour+plot+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5B%0A++++title%3D%7BContour+plot%2C+view+from+top%7D%2C%0A++++view%3D%7B0%7D%7B90%7D%0A%5D%0A%5Caddplot3%5B%0A++++contour+gnuplot%3D%7Blevels%3D%7B0.8%2C+0.4%2C+0.2%2C+-0.2%7D%7D%0A%5D%0A%7Bsin%28deg%28sqrt%28x%5E2%2By%5E2%29%29%29%2Fsqrt%28x%5E2%2By%5E2%29%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%0A%5Cend%7Bdocument%7D)

Le résultat de ce code est montré dans l'image ci-dessous — le préambule du document LaTeX est ajouté automatiquement lorsque vous ouvrez le lien :

![Contourplotexample.png](/files/00246bc35eb253e15bcc3e4298383cdd0add8704)

#### Explication du code

Voici un tracé de certaines lignes de contour pour la même équation que celle utilisée dans la section précédente. La valeur du `title` paramètre se trouve entre accolades car il contient une virgule ; nous utilisons donc les accolades de groupement pour éviter toute confusion avec les autres paramètres passés à la `\begin{axis}` déclaration. Il y a deux nouvelles commandes :

**view={0}{90}**

Cela modifie la vue du tracé. Le paramètre est passé à l'environnement axis, ce qui signifie qu'il peut être utilisé dans tout autre type de tracé 3D. La première valeur est une rotation, en degrés, autour de l'axe z ; la deuxième sert à faire pivoter la vue autour de l'axe x. Dans cet exemple, en combinant une rotation de 0° autour de l'axe z et une rotation de 90° autour de l'axe x, on obtient une vue du tracé depuis le dessus.

**contour gnuplot={levels={0.8, 0.4, 0.2, -0.2}}**

Cette ligne de code fait deux choses : premièrement, elle indique à LaTeX d'utiliser le logiciel externe gnuplot pour calculer les lignes de contour ; cela fonctionne très bien dans Overleaf, mais si vous voulez utiliser cette commande dans votre installation locale de LaTeX, vous devez d'abord installer gnuplot (matlab fonctionnera également ; dans ce cas, écrivez matlab au lieu de gnuplot dans la commande). Deuxièmement, le sous-paramètre levels est une liste de valeurs de niveaux d'altitude où les lignes de contour doivent être calculées.

### Tracer une surface à partir de données

Pour tracer un ensemble de données sous forme de surface 3D, tout ce dont nous avons besoin est les coordonnées de chaque point. Ces coordonnées peuvent être un ensemble non ordonné ou, dans ce cas, une matrice :

```latex
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
coordinates {
(0,0,0) (0,1,0) (0,2,0)

(1,0,0) (1,1,0.6) (1,2,0.7)

(2,0,0) (2,1,0.7) (2,2,1.8)
};
\end{axis}
\end{tikzpicture}
```

[Ouvrez cet `pgfplots` Exemple de surface 3D dans Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=plotting+a+surface+from+data+with+pgfplots\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot3%5B%0A++++surf%2C%0A%5D+%0Acoordinates+%7B%0A%280%2C0%2C0%29+%280%2C1%2C0%29+%280%2C2%2C0%29%0A%0A%281%2C0%2C0%29+%281%2C1%2C0.6%29+%281%2C2%2C0.7%29%0A%0A%282%2C0%2C0%29+%282%2C1%2C0.7%29+%282%2C2%2C1.8%29%0A%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%0A%5Cend%7Bdocument%7D)

Le résultat de ce code est montré dans l'image ci-dessous — le préambule du document LaTeX est ajouté automatiquement lorsque vous ouvrez le lien :

![3dsurfacedata.png](/files/4810194dab4c7cc3d3a21cd875e5f7d98524901f)

#### Explication des données

Les points passés au `coordinates` paramètre sont considérés comme contenus dans une matrice de 3 × 3, en utilisant une ligne vide comme séparateur pour chaque ligne de la matrice.

Toutes les options pour les tracés 3D de cet article s'appliquent aux surfaces de données.

### Tracé paramétrique

La syntaxe des tracés paramétriques est légèrement différente. Voyons un exemple :

```latex
\begin{tikzpicture}
\begin{axis}
    [
    view={60}{30},
    ]
\addplot3[
    domain=0:5*pi,
    samples = 60,
    samples y=0,
]
({sin(deg(x))},
{cos(deg(x))},
{x});
\end{axis}
\end{tikzpicture}
```

[Ouvrez cet `pgfplots` exemple de tracé paramétrique dans Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+parametric+plot+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A++++%5B%0A++++view%3D%7B60%7D%7B30%7D%2C%0A++++%5D%0A%5Caddplot3%5B%0A++++domain%3D0%3A5%2Api%2C%0A++++samples+%3D+60%2C%0A++++samples+y%3D0%2C%0A%5D%0A%28%7Bsin%28deg%28x%29%29%7D%2C%0A%7Bcos%28deg%28x%29%29%7D%2C%0A%7Bx%7D%29%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Le résultat de ce code est montré dans l'image ci-dessous — le préambule du document LaTeX est ajouté automatiquement lorsque vous ouvrez le lien :

![Parametricplot.png](/files/cd3795cf6dfae65891d0c106b6041ce728c97850)

#### Explication du code

Il n'y a que deux nouveautés dans cet exemple : premièrement, le `samples y=0` pour empêcher `pgfplots` de relier les points extrêmes de la spirale ; et deuxièmement, la manière dont la fonction à tracer est passée à l' `addplot3` environnement. Chaque fonction paramétrique est regroupée entre accolades et les trois paramètres sont délimités par une parenthèse.

## Guide de référence

| Commande/Option/Environnement | Description                                                                                                                                  | Valeurs possibles                                                                                                                                                                                                                                                                                                                                   |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **axis**                      | Tracés normaux avec échelle linéaire                                                                                                         |                                                                                                                                                                                                                                                                                                                                                     |
| **semilogxaxis**              | échelle logarithmique de x et échelle normale de y                                                                                           |                                                                                                                                                                                                                                                                                                                                                     |
| **semilogyaxis**              | échelle logarithmique de y et échelle normale de x                                                                                           |                                                                                                                                                                                                                                                                                                                                                     |
| **loglogaxis**                | échelle logarithmique pour les axes x et y                                                                                                   |                                                                                                                                                                                                                                                                                                                                                     |
| **axis lines**                | modifie la manière dont les axes sont dessinés. La valeur par défaut est '*boîte*                                                            | box, left, middle, center, right, none                                                                                                                                                                                                                                                                                                              |
| **legend pos**                | position de la boîte de légende                                                                                                              | south west, south east, north west, north east, outer north east                                                                                                                                                                                                                                                                                    |
| **mark**                      | type de marques utilisées dans le tracé de données. Lorsqu'un seul caractère est utilisé, son apparence est très proche de la marque réelle. | \*, x , +, \|, o, astérisque, étoile, étoile à 10 branches, oplus, oplus\*, otimes, otimes\*, carré, carré\*, triangle, triangle\*, losange, demi-losange\*, demi-carré\*, droite\*, gauche\*, étoile Mercedes, étoile Mercedes inversée, demi-cercle, demi-cercle\*, pentagone, pentagone\*, cubes. (cubes ne fonctionnent que sur les tracés 3D). |
| **colormap**                  | jeu de couleurs à utiliser dans un tracé, personnalisable, mais il existe quelques colormaps prédéfinis                                      | hot, hot2, jet, blackwhite, bluered, cool, greenyellow, redyellow, violet.                                                                                                                                                                                                                                                                          |

## Lectures complémentaires

Pour plus d'informations, voir :

* [Utiliser les couleurs dans LaTeX](/latex/fr/mise-en-forme/13-using-colors-in-latex.md)
* [Package TikZ](/latex/fr/figures-et-tableaux/05-tikz-package.md)
* [Externalisation de pgfplots et des tikzpictures](/latex/fr/questions-et-reponses/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md)
* [Insertion d'images](/latex/fr/autres-sujets/27-inserting-images.md)
* [Listes des tableaux et des figures](/latex/fr/figures-et-tableaux/03-lists-of-tables-and-figures.md)
* [Positionnement des images et des tableaux](/latex/fr/figures-et-tableaux/02-positioning-images-and-tables.md)
* [Dessiner des diagrammes directement dans LaTeX](/latex/fr/figures-et-tableaux/04-picture-environment.md)
* [Le **pgfplots** documentation du paquet](http://mirrors.ctan.org/graphics/pgf/contrib/pgfplots/doc/pgfplots.pdf).
* [Les packages TikZ et PGF : manuel pour la version 3.0.0](http://mirror.utexas.edu/ctan/graphics/pgf/base/doc/pgfmanual.pdf)
* [Exemples TikZ et PGF sur TeXample.net](http://www.texample.net/tikz/examples/all/)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/fr/specifique-a-un-domaine/08-pgfplots-package.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
