Cette page appartient aux archives web de l'EPFL et n'est plus tenue à jour.
This page belongs to EPFL's web archive and is no longer updated.

<big><big><span style="font-weight: bold;">Insérer un graphique gnuplot dans LaTeX</span></big></big>

Le but est de faire un graphique dans gnuplot, puis de l'exporter dans un format que l'on peut ensuite utiliser dans LaTeX. Il existe beaucoup de manière de faire mais je préfère utiliser le terminal epslatex. Tout ce qui est graphique est produit dans un postscript encapsulé (eps) et tout ce qui est texte est produit dans un fichier tex. On peut ainsi facilement faire des modifications dans les légendes sans refaire le graphique, par exemple si on veut changer tout les "x" en "y". De plus il est possible d'utiliser des formules mathématiques dans les légendes puisqu'elles sont au format TeX.

Création du graphique

Comme un exemple est souvent plus parlant, je vais expliquer comment faire le graphique se trouvant en bas de cet article.

Le plus pratique dans ce genre de situtation est de mettre toutes les commandes dans un fichier texte que l'on charge ensuite dans gnuplot, par example dans le fichier "example.plt".

Les "#" permettent de mettre des commentaire. Pour chaque commande vous pouvez taper dans gnuplot "help <commande>" pour avoir plus d'informations.

# *** Début de example.plt ***

# C'est toujours utile de commencer par un reset à moins d'avoir préalablement réglé certaines choses dans gnuplot.
reset

# Titre du graphique
set title ' {\bf Sinus} de x'

# Les titres des axes
set xlabel 'Axe x'
set ylabel 'Axe y'

# Division de l'unité de graduation sur l'axe y en 10
set mytics 10

# Définition de la légende de la graduation sur l'axe x
# Les "\" servent à écrire la commande sur plusieurs lignes pour plus de lisibilité
# Ici les commandes LaTeX doivent être précédés de "\\" au lieu de "\"
set xtics (\
"$\\int_{-\\pi}^{\\pi} sin(x) dx$" 0. 0,\
"" pi/2. 1,\
"$\\frac{i\\pi}{2}\\int_{\\pi}^{2\\pi} e^{i\\theta} d\\theta$" pi 0,\
"" 3*pi/2. 1,\
"$2\\pi \\int_{0}^{\\frac{\\pi}{2}} cos(\\phi) d\\phi$" 2.*pi 0)

# Longueur du trait dans la légende
set key samplen 2

# Format de l'axe y avec trois chiffres après la virgule
set format y '$%.3f$'

# Utilisation du terminal epslatex
set terminal epslatex
set output 'example.eps'

# Plot de la fonction, ici pour la légende "\"suffit pour la commande LaTeX
plot [0:2*pi][-1.1:1.1] sin(x) title '$|\sqrt{1-cos^2(x)}|$'

# Fermeture du fichier (important!)
set output

# *** Fin de example.plt ***

Pour créer le graphique il faut faire "load example.plt" si on se trouve dans gnuplot ou sinon "gnuplot example.plt" (sous Linux).

Gnuplot a créé deux fichiers: example.tex et example.eps.

Insertion dans LaTeX

Comme on utilise des graphiques eps, il faut utiliser le paquet graphicx:

\usepackage[dvips]{graphicx}


L'insertion du graphique se fait alors simplement avec:

\begin {figure}
\input{example}
\end {figure}


Si l'on a plusieurs graphiques à insérer et qu'on veut par exemple tous les centrer et réduire la taille des légendes, il est utile de définir un nouvel environnement:

\newenvironment{graph}{
\begin{figure}[htb]
\begin{center}
\scriptsize
}{
\end{center}
\end{figure}
\normalsize
}

Le graphique est alors inséré comme ceci:

\begin{graph}
\input{example}
\end{graph}


Mais on peut faire encore mieux en définissant une nouvelle commande:

\newcommand{\graphique}[1]{
\begin{graph}
\input{#1}
\end{graph}
}


Et le graphique est alors inséré avec:

\graphique{example}


Finalement si on veut ajouter des légendes et des références à ses graphiques on définira alors la commande:

\newcommand{\g}[3]{
\begin{graph}
\input{#1}
\caption{#2}
\label{#3}
\end {graph}
}

Et le graphique est alors inséré avec:

\g{example}{Légende du graphique example}{Label du graphique example}


L'utilisation d'une nouvelle commande ou d'un nouvel environnement est seulement utile si l'on a plusieurs graphiques ayant le même type de mise en page.



Utilisation avec pdfTeX

Si l'on veut créer un PDF il faut tout d'abord convertir les images eps en pdf. Sous linux on peut utiliser la commande:

epstopdf <fichier.eps>

et si on en a plusieurs dans un dossier à convertir on peut utiliser la commande

for i in *.eps; do epstopdf $i; done

Et finalement il faut utiliser pdftex au lieu de dvips dans graphicx:

\usepackage[pdftex]{graphicx}

et bien sûr compiler le document LaTeX avec pdfTeX !


Références

Inserting a postscript figure into LaTeX using gnuplot's epslatex terminal

LaTeX and the Gnuplot Plotting Program

Using Imported Graphics in LaTeX 2e

Une courte (?) introduction à LaTeX 2e (version 3.20)

The Not So Short Introduction to LaTeX 2e (version 4.14)

Gnuplot Quick Reference
Posted by Stéphane Mattei on Tuesday 14 December 2004 at 18:08
Comments
Intéressant... et bien expliqué! pas mal les environnements. Et merci pour les infos sur les pdfs je me demandais comment faire justement :)
Posted by Jérémie Knüsel on Wednesday 15 December 2004 at 18:16
A ce propos la commande pour convertir plusieurs graphiques à la fois doit te rappeler quelque chose...
Posted by Stéphane Mattei on Wednesday 15 December 2004 at 23:24