Introduction
Dans certaines circonstances, les aires doivent être mises en évidence. Comment réaliser le remplissage des aires avec Latex et le package PgfPlots ?
Dans le graphique ci-dessus, on veut remplir les aires entre les 2 courbes.
Le code Tex pour les 2 graphiques dans un environnement tikzpicture
est le suivant :
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage{amsmath,amssymb,amsfonts}
\usepgfplotslibrary{fillbetween}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-3, xmax=3,
ymin=-10, ymax=10,
xtick distance=1, ytick distance=4 ]
\addplot [domain=-2.5:2.5, samples=100, thick, color=red!50]
{3*x^3 - x^2 - 10*x};
\addplot [domain=-2.5:2.5, samples=100, thick, color=blue!50]
{- x^2 + 2*x};
\draw [dashed, opacity=0.4] (axis cs:{-2,0}) -- (axis cs:{-2,-8});
\node[color=red, font=\footnotesize] at (axis cs: -1.6,7) {$f(x)=3x^3 - x^2 - 10x$};
\node[color=blue, font=\footnotesize] at (axis cs: 1.1,2.2) {$g(x)=- x^2 + 2x$};
\end{axis}
\end{tikzpicture}
\end{document}
Librairie fillbetween, aires entre 2 courbes
- Pour remplir l’aire entre 2 courbes : importer la librairie
fillbetween
de PgfPlots\usepgfplotslibrary{fillbetween}
- Donner un nom de chemin pour chaque tracé avec l’option
name path
: les chemins des courbes sont nommésf
etg
dans cet exemple.\addplot [domain=-2.5:2.5, samples=100, name path=f, thick, color=red!50] {3*x^3 - x^2 - 10*x}; \addplot [domain=-2.5:2.5, samples=100, name path=g, thick, color=blue!50] {- x^2 + 2*x};
- Ajouter un tracé pour remplir l’aire avec
fill between [of=<nom du chemin 1> and <nom du chemin 2>]
L’option\addplot[red!10, opacity=0.4] fill between[of=f and g, soft clip={domain=-2:2}];
soft clip
est utilisée pour restreindre le domaine.
C’est tout.
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage{amsmath,amssymb,amsfonts}
\usepgfplotslibrary{fillbetween}
\begin{tikzpicture}
\begin{axis}[
xmin=-3, xmax=3,
ymin=-10, ymax=10,
xtick distance=1, ytick distance=4 ]
\addplot [domain=-2.5:2.5, samples=100, name path=f, thick, color=red!50]
{3*x^3 - x^2 - 10*x};
\addplot [domain=-2.5:2.5, samples=100, name path=g, thick, color=blue!50]
{- x^2 + 2*x};
\addplot[red!10, opacity=0.4] fill between[of=f and g, soft clip={domain=-2:2}];
\draw [dashed, opacity=0.4] (axis cs:{-2,0}) -- (axis cs:{-2,-8});
\node[color=red, font=\footnotesize] at (axis cs: -1.6,7) {$f(x)=3x^3 - x^2 - 10x$};
\node[color=blue, font=\footnotesize] at (axis cs: 1.1,2.2) {$g(x)=- x^2 + 2x$};
\end{axis}
\end{tikzpicture}
\end{document}
Aires et l’axe des abcisses x
Pour remplir l’aire entre une courbe et l’axe des abcisses x, créer un nom de chemin pour l’axe des abcisses avec la commande path
:
\addplot [domain=-2.5:2.5, samples=100, name path=f, thick, color=red!50]
{3*x^3 - x^2 - 10*x};
\path [name path=xaxis]
(\pgfkeysvalueof{/pgfplots/xmin},0) --
(\pgfkeysvalueof{/pgfplots/xmax},0);
\addplot[red!10, opacity=0.4] fill between [of=f and xaxis, soft clip={domain=-2:2}];
Fillbetween, split. Segments d’une aire
En utilisant fill between
, l’aire entre 2 courbes peut être divisée en segments en fonction de chaque intersection entre les 2 courbes.
Un index est appliqué pour chaque segment d’aire. L’option split
est obligatoire pour calculer les segments.
\addplot [domain=-2.5:2.5, samples=100, name path=f, thick, color=red!50]
{3*x^3 - x^2 - 10*x};
\path [name path=xaxis]
(\pgfkeysvalueof{/pgfplots/xmin},0) --
(\pgfkeysvalueof{/pgfplots/xmax},0);
\addplot[red!10, opacity=0.4] fill between [
of=f and xaxis, soft clip={domain=-2:2},
split,
every even segment/.style = {blue!20!white},
every odd segment/.style ={green!20!white}];
Dans l’exemple ci-dessus, les indexes pairs et impairs sont différemment stylisés.
Pour gérer un segment par son numéro d’index ou le dernier :
every segment no 2/.style={pattern=north east lines}
every last segment/.style={top color=orange, bottom color=blue}