Ceci est une ancienne révision du document !



Gnuplot

Gnuplot est un package Debian qui est installé par défaut sur Ubuntu depuis la version Dapper. Ce dernier est une puissante interface pour la représentation graphique de données provenant d'un fichier texte. Par exemple, dans un processus de calcul numérique, il est souvent intéressant de stocker régulièrement les paramètres principaux du schéma (Erreur, résidu, n° de l'itération, différents indices,…). Le plus simple étant de génerer un fichier texte associé au calcul, dans lequel on range les données par colonne.

Pour lancer Gnuplot, dans un terminal, taper :

gnuplot

Gnuplot se lance alors directement dans la fenêtre active du terminal, et on obtient quelquechose qui ressemble à ça :

alarat@troll:~/High_Order$ gnuplot

        G N U P L O T
        Version 4.0 patchlevel 0
        last modified Thu Apr 15 14:44:22 CEST 2004
        System: Linux 2.6.15-27-686

        Copyright (C) 1986 - 1993, 1998, 2004
        Thomas Williams, Colin Kelley and many others

        This is gnuplot version 4.0.  Please refer to the documentation
        for command syntax changes.  The old syntax will be accepted
        throughout the 4.0 series, but all save files use the new syntax.

        Type `help` to access the on-line reference manual.
        The gnuplot FAQ is available from
                http://www.gnuplot.info/faq/

        Send comments and requests for help to
                <gnuplot-info@lists.sourceforge.net>
        Send bugs, suggestions and mods to
                <gnuplot-bugs@lists.sourceforge.net>


Terminal type set to 'x11'
gnuplot>

Si vous n'obtenez pas ça, c'est que Gnuplot n'est pas (est mal) installé.

Pour installer Gnuplot, vous avez plusieurs choix :

A partir des sources

Indispensable pour pouvoir profiter des options de complétion et d'historique. C'est pour cette raison que j'ai écrit cette doc. Réferez vous à la section Completion Bash et Historique.

Par Synaptic

Dans Synaptic, chercher Gnuplot, et installer. ;-)

Par ligne de commande

Dans un terminal, tapez :

sudo apt-get install gnuplot

puis donnez le password de votre compte utilisateur

Je ne suis pas un spécialiste du logiciel. J'ai surtout écrit la doc pour la dernière partie, car j'ai pas mal galéré pour y arriver, vu le manque d'informations sur le web.

Si vous passez sur cette page et en connaissez un peu plus, merci d'éditer…

Sinon, pour toute info pointue, se référer au site officiel de Gnuplot.

Directement dans un terminal

Après avoir lancé Gnuplot, on obtient alors la ligne de commande suivante :

gnuplot>

Pour créer un graphe, dans cette ligne taper la commande :

plot 'adresse_du_fichier_a_ploter' using colonne_valeurs_abscisse:colonne_valeurs_ordonnee

L'option 'using' peut être raccourcie en 'u'. Par défaut, Gnuplot représente un nuage de points. Pour obtenir une ligne brisée, il faut ajouter l'option 'with lines', qui dans sa version raccourcie devient 'w l'.

Ainsi, pour afficher la ligne brisée représentant la cinquième colonne en fonction de la première colonne du fichier "Resultats", se trouvant dans le dossier père du dossier dans lequel on a lancé Gnuplot, on doit taper la commande :

plot '../Resultats' u 1:5 w l

Il s'ouvre alors une nouvelle fenêtre pour l'affichage du graphique.

Maintenant, si on veut rajouter le nuage de points représentant la troisième colonne en fonction de la deuxième colonne du fichier "Nouveau_Resultats" du dossier courant, sur cette même représentation graphique, il faut taper la commande :

plot '../Resultats' u 1:5 w l, 'NouveauResultats' u 2:3

J'ai découvert récemment qu'il existe des raccourcis clavier pour activer des options directement sur la fenêtre de représentation graphique. Ainsi, si l'on tape 'l', on obtient une représentation logarithmique en ordonnée, et si l'on tape 'Maj+L', on obtient une représentation logarithmique en l'abscisse la plus proche du curseur de la souris. Pour plus d'info sur les raccourcis :

Avec un fichier de config

En fait Gnuplot est un logiciel extrêment puissant pour la représentation de données, puisqu'il est conçu pour lancer des sortes de scripts. On peut donc, dans un fichier de configuration, rentrer des lignes de commandes Gnuplot qui permettent de lancer des actions en cascades sur un même fichier. Pour l'instant, je n'ai pas encore eu l'occasion de me servir de ces propriétés.

Il serait peut-être bien de référencer ici les lignes de commandes principales pour faire de jolies représentations graphiques. Si vous êtes expert, merci de contribuer. Sinon, vous pouvez aller vous renseigner sur le web et faire part de vos découvertes ici. A suivre…

il est possible de donner un nom aux axes et un titre au graphique en envoyant la commande :

gnuplot load nom_du_fichier_config 

Ce fichier pourrait par exemple contenir :

set title ' Flux en fonction du temps: '
set xlabel ' Temps (jj/mm) / (HH/MM)'
set ylabel ' Flux '
set xdata time
set timefmt "%d%m%H%M"
set format x "%d/%m\n%H/%M"
plot "flux.flx" using 1:2 with lines

A partir d'un programme en 'C'

voici un exemple:

#include <stdio.h>
#include <stdlib.h>

#define GNUPLOT_PATH "/usr/bin/gnuplot"

int main()
{
        FILE *gp;

        gp = popen(GNUPLOT_PATH, "w");
         if(gp == NULL){
            fprintf(stderr, "Oops, I can't find %s.", GNUPLOT_PATH);
             exit(EXIT_FAILURE);
        }
        fprintf(gp, "cd '/home/yoann/Desktop/prog/test/gnuplotest'\n load config\n");
          fflush(gp); /* On oublie pas le buffer. */
          getchar();
          pclose(gp);

exit(EXIT_SUCCESS);
}

Démarche

J'ai écrit ce Tuto, parce que j'ai cherché à pouvoir profiter de la complétion et de l'historique dans Gnuplot, quand celui-ci est utilisé en mode terminal. On m'a dit que c'était tout à fait possible (ces options sont notamment par défaut dans SuSE), mais je n'ai trouvé que très peu de doc sur le web, même en anglais !

Ces deux options ne sont pas mises par défaut dans Ubuntu, car Gnuplot est disponible sous une licence spéciale, qui interdit sa distribution après modification. Il serait ainsi illégal que je mette ici un lien vers mon package recompilé à partir des sources de Gnuplot. Par contre, ce tuto est tout à fait autorisé, et vous avez le droit de suivre ses instructions pour une utilisation personelle du logiciel !

Pour activer la complétion et l'historique de Gnuplot en mode terminal, il vous faudra télécharger les sources du logiciel, puis les recompiler avec les options nécessaires, en faisant bien attention aux dépendances requises. Vous obtiendrez alors un nouveau package qu'il vous suffira d'installer sur votre distribution. Enfin, il faudra bloquer la version de votre nouveau Gnuplot, afin que vos gestionnaires de mise-à-jour ne détruisent pas votre travail à chaque upgrade.

Sources

Avant de télécharger les sources, bien verifier d'abord que /etc/apt/sources.list contient l'adresse des dépôts "sources" officiels, c'est à dire :

## Depots "source" officiels
deb-src http://fr.archive.ubuntu.com/ubuntu/ dapper main restricted universe multiverse
deb-src http://fr.archive.ubuntu.com/ubuntu/ dapper-updates main restricted universe multiverse
deb-src http://fr.archive.ubuntu.com/ubuntu/ dapper-security main restricted universe multiverse
deb-src http://fr.archive.ubuntu.com/ubuntu/ dapper-backports main restricted universe multiverse

Si non, alors dans un terminal, taper :

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

Cette dernière ligne permet de créer un sauvegarde. Ainsi, si vous faîtes une connerie, vous pourrez revenir à la configuration initiale avec :

sudo cp /etc/apt/sources.list.bak /etc/apt/sources.list

Puis :

sudo gedit /etc/apt/sources.list

Y copier les lignes ci-dessus, enregistrer, fermer et recharger les dépôts par la commande :

sudo apt-get update

On peut maintenant charger les sources. Se placer dans /usr/local/src (ceci n'est pas obligatoire) et y télécharger les sources de Gnuplot :

 
cd /usr/local/src
sudo apt-get source gnuplot

Nouveau package Gnuplot

Tout d'abord, installer la librairie readline et les dépendances qui permettront de compiler le package Gnuplot avec les options de complétion et d'historique :

sudo apt-get install libreadline5 libreadline5-dev libxt-dev libgd2-noxpm-dev debhelper texinfo tetex-bin tetex-extra
Dans une dernière utilisation de ce tuto, j'ai du installer gcc. Ca m'a semblé bizzare que ce dernier ne soit pas par défaut dans cette XUbuntu Dapper Drake.

Puis aller dans le répertoire /etc/apt/src/gnuplot-*.*.*/debian/ (les étoiles correspondant à la version) :

cd /usr/local/src/gnuplot-*.*.*/debian/

Editer le fichier 'rules' :

sudo gedit rules

et remplacer l'option –without-gnu-readline par –with-readline=gnu. Ceci active la complétion. Pour l'historique, ajouter dans la même ligne l'option : –enable-history-file.

On obtient ainsi le paragraphe :

config.status: configure
	dh_testdir
	# Add here commands to configure the package.
	./configure $(confflags) CFLAGS="$(CFLAGS)" \
	  --prefix=/usr --mandir=\$${prefix}/share/man \
	  --infodir=\$${prefix}/share/info \
	  --datadir=\$${prefix}/share/gnuplot \
	  --libexecdir=\$${prefix}/lib/gnuplot \
	  --with-readline=gnu --enable-history-file --without-lasergnu \
	  --with-png --with-gd --without-lisp-files \
	  --without-linux-vga --with-gihdir=\$${prefix}/share/gnuplot

Remonter dans le dossier père et compiler le package :

cd ..
sudo dpkg-buildpackage 

Il est tout à fait possible qu'il vous manque encore des dépendances. Dans ce cas, le compilateur stoppe au bout de très peu de temps. Il vous suffit alors de lire attentivement les messages d'erreurs pour savoir quelles dépendances vous manquent, les installer, et recompiler. La compilation prend quelques minutes (suivant les architectures…). Merci de signaler d'éventuelles difficultés.

Installer le nouveau package

Remonter encore d'un dossier et installer le nouveau paquet :

cd ..
sudo dpkg -i gnuplot-*.deb

Les fichiers .deb sont les fichiers du nouveau package Gnuplot. Conservez les précieusement, car Gnuplot rentre désormais en conflit avec vos gestionnaires de mise-à-jour. En effet, ils considèrent que votre nouvelle version de Gnuplot est antérieure à celle disponible sur les dépots. Il est possible que par une fausse manipulation vous remettiez à jour Gnuplot. Vous perderiez alors la completion et l'historique. Vous pourrez les remettre en service grâce à :

cd /usr/local/src/
sudo dpkg -i gnuplot-*.deb

La seule parade que j'ai pu trouvée est de poser un 'hold' sur le paquet 'gnuplot-nox' dans mon gestionnaire de mise-à-jour. Ou de déselectionner manuellement le package 'gnuplot-nox' à chaque mise-à-jour. Si quelqu'un a une autre solution, merci de m'en faire part sur mon adresse mail visible sur mon profil. Et, bien sûr, d'éditer ce tuto !

Bloquer les mises à jour

Je viens de passer pas mal de temps à comprendre comment bloquer un package à sa version actuelle, et ainsi ne pas le corrompre par une mise à jour. Il n'y a apparement pas de doc sur ce site à ce propos. C'est fort dommage, et je ne suis certainement pas assez fort pour en faire une. J'ai cependant une solution :

J'ai d'abord essayé de poser un 'hold' sur mes paquets Gnuplot dans aptitude. Puis par l'interface graphique Synaptic. Toujours le même problème : gnuplot-nox apparaissait systématiquement dans mes gestionnaires de mise-à-jour (quels qu'ils soient). La solution : dselect.

Il n'y a pour l'instant pas de doc sur dselect sur ce site web, c'est pourquoi la méthode ci-dessous reste encore assez mystérieuse.

dans un terminal, taper :

sudo dselect

On obtient l'interface suivante :

Debian `dselect' package handling frontend.

   0. [A]ccess    Choose the access method to use.
   1. [U]pdate    Update list of available packages, if possible.
 * 2. [S]elect    Request which packages you want on your system.
   3. [I]nstall   Install and upgrade wanted packages.
   4. [C]onfig    Configure any packages that are unconfigured.
   5. [R]emove    Remove unwanted software.
   6. [Q]uit      Quit dselect.

Move around with ^P and ^N, cursor keys, initial letters, or digits;
Press <enter> to confirm selection.   ^L redraws screen.

Version 1.13.11 (i386).
Copyright (C) 1994-1996 Ian Jackson.
Copyright (C) 2000,2001 Wichert Akkerman.
This is free software; see the GNU General Public Licence version 2
or later for copying conditions.  There is NO warranty.  See
dselect --licence for details.
  • Se placer sur la ligne 2. (avec les flèches directionnelles ou en tapant sur 'S').
  • Taper 'Entrée'.
  • Taper sur la barre d'espace pour quitter l'aide.

Vous êtes maintenant dans le gestionnaire de paquet dselect :

  • Taper '/' (Maj+'/') pour effectuer une recherche
  • Rechercher 'gnuplot'
  • La touche 'n' permet de se déplacer d'un package contenant la chaine de caractère 'gnuplot' à un autre. Se déplacer jusqu'à ces trois lignes :
    ─────── Up-to-date Optional packages in section universe/math ───────
 *** Opt universe gnuplot      4.0.0-2.1   4.0.0-2.1   A command-line driven interactive plotting program
 *** Opt universe gnuplot-nox  4.0.0-2.1   4.0.0-2.1   A command-line driven interactive plotting program
 *** Opt universe gnuplot-x11  4.0.0-2.1   4.0.0-2.1   X11-terminal driver for gnuplot
 

Les trois étoiles en début de ligne marquent l'état d'installation des packages. Il s'agit maintenant de les bloquer à la mise à jour.

  • Se placer sur chacune des lignes et taper '='. Cette action 'hold' les packages à leur version actuelle
  • On obtient alors :
    ─────── Up-to-date Optional packages in section universe/math ───────
 *== Opt universe gnuplot      4.0.0-2.1   4.0.0-2.1   A command-line driven interactive plotting program
 *== Opt universe gnuplot-nox  4.0.0-2.1   4.0.0-2.1   A command-line driven interactive plotting program
 *== Opt universe gnuplot-x11  4.0.0-2.1   4.0.0-2.1   X11-terminal driver for gnuplot
 

Il faut maintenant quitter dselect :

  • Taper 'Entrée'.
  • Normalement, on arrive dans l'aide qui vous demande de taper sur 'space' pour quitter. Taper sur la barre d'espace.
  • Taper à nouveau sur 'Entrée'.
  • On est revenu au menu initial. Descendre à la ligne 6. par les flèches ou en tapant 'Q'
  • C'est gagné. Normalement aucun des gestionnaires de mise-à-jour n'accepte de mettre Gnuplot à jour ;-)

Contributeur : laden.

  • gnuplot.1201278383.txt.gz
  • Dernière modification: Le 18/04/2011, 14:59
  • (modification externe)