PSI - Travaux Pratique - Initiation à GNUPlot
Prise en main
Dans un terminal, lancez la commande gnuplot
et faîtes les exercices et questions suivants:
$ gnuplot
gnuplot>
- Remarquez bien le prompt
gnuplot >
en début de ligne. C’est un repère important pour savoir si vous pouvez taper une nouvelle commande de tracé ou si vous êtes perdu ailleurs, par exemple dans l’aide. - familiarisez-vus avec l’aide en ligne: tapez la commande
help
, et faites defiler les pages jusqu’au retour du promptgnuplot
gnuplot> help
Gnuplot is a portable command-line driven graphing utility for Linux, OS/2, MS Windows, OSX, VMS, and many other platforms. The source code is copyrighted but freely distributed (i.e., you don’t have to pay for it). It was originally…
.
.
.\\
A la fin de la première page d’aide vous obtenez la liste de tous les sujets (topics): Help topics available:
2D 3D automated background backwards batch/interactive binary bugs canvas circle colornames colorspec commands comments complete coordinates datafile datastrings ellipse enhanced environment examples expressions fonts gd glossary gnuplot gnuplot-defined gprintf help-desk if image introduction iteration line-editing linecolor linetypes mixing_macros_backquotes mouse new-features newhistogram object plotting pm3d polygon pseudocolumns quotes rectangle rgbcolor set show startup strings substitution syntax time/date using while xticlabels
- Consultez l’aide de la commande
plot
(choisissez le topic plot)
Help topic: plot
- Essayez les commandes suivantes et expliquez ce qu’elles font:
gnuplot> plot sin(x)
gnuplot> plot sin(x) with lines
gnuplot> plot sin(x) with impulses
gnuplot> plot [-pi:pi] sin(x) with impulses
gnuplot> plot [-pi:pi] sin(x) with impulses, sin(x) with lines
gnuplot> plot [-pi:pi] sin(x) with impulses, sin(x) with lines, cos(x) with lines
gnuplot> plot [-pi:pi] sin(x) with impulses, sin(x) with lines ls 1, cos(x) with lines
gnuplot> plot [-pi:pi] sin(x) with impulses, sin(x) with lines ls 1, cos(x) with filledcurve fillstyle transparent pattern 4
gnuplot> plot [-pi:pi] sin(x) with impulses, sin(x) with lines ls 1, cos(x) w filledc fs trans pat 4
gnuplot> plot [-pi:pi] sin(x) with impulses notitle, sin(x) with lines ls 1 title “sinus”, cos(x) w filledc fs trans pat 4 title “cosinus”
Modifiez la dernière commande pour que l’affichage obtenu soit exactement identique au suivant. Utilisez au besoin la documentation.
Tapez les deux lignes de commande suivantes, puis rappelez la dernière commande de tracé. Quels changements observez-vous?
gnuplot> set ylabel “valeurs”
gnuplot> set xlabel “abscisse”
Utilisez la commande set title
pour ajouter un titre à notre tracé.
Tapez les deux lignes de commande suivantes, puis rappelez la dernière commande de tracé. Que se passe-t-il?
gnuplot> set terminal png
gnuplot> set output “courbe1.png”
A l’aide de votre navigateur web, ouvrez le fichier “courbe1.png”.
Travail sur des fichiers de données
Quittez gnuplot et relancez-le de facon a repartir dans la configuration initiale. Tracez la courbe sin(x) pour verifier que ca fonctionne.
Téléchargez les fichiers de données suivants dans votre répertoire de travail:
Utilisez la commande suivante:
gnuplot> plot “fichier1.dat”
Est-ce bien le résultat attendu? Lisez la documentation sur le topic using
afin d’obtenir un tracé qui affiche les valeurs de la 2e colonne en abscisse et celles de la 3e colonne colonne en ordonnée.
En vous insiprant des questions précédentes et en utilisant (un peu) l’aide, reproduisez le tracé des données du fichier fichier1.dat
comme dans l’image suivante:
Ajoutez au tracé les courbes correspondant aux données des deux autres fichiers, fichier2.dat
et fichier3.dat
Testez la commande suivante:
gnuplot> plot “fichier1.dat” using 2:3 with lines title “fichier1.dat (brut)”, “fichier1.dat” using 2:3 with lines smooth bezier title “fichier1.dat (bezier)”
Expliquez la différence entre les deux courbes.
Exercice du cours
Voici le fichier de données
Reproduisez le tracé suivant (en choisissant de sauvegarder l’image au format PDF):
Quelques ressources utiles
- le script mergecols.py
Cas pratique
Le fichier pop-1janvier-fe-simp.xls provient du site de l’INSEE. Il donne la population totale par sexe et âge au 1er janvier 2015 en France.
L’ojectif de cet exercice est de produire une pyramide des ages telle que présentée sur la figure suivante.
La première partie du travail consiste à transformer le jeu de données intiales en un jeu de données qui convienne a gnuplot. A l’aide d’excel ou OpenOffice, on supprimera la partie superieure des données qui donne un résumé des statistiques, puis on sauvegardera dans un format texte de type CSV. Attention aux caractères spéciaux et à l’encodage des caractères, qui doit être utf-8 pour gnuplot.
La commande unix file
permet d’obtenir des informations sur un fichier, et notamment son encodage.
Le commande unix iconv
permet de convertir un fichier d’un encodage a un autre.
A l’issue de cette étape de préparation, vous devriez aboutir à un fichier de données tel que celui-ci (essayez de parvenir à ce résultat par vous-même).
A vous ensuite de trouver les commandes gnuplot qui permettent de produire le schéma ci-dessus.
Ceux qui auront terminé plus tot peuvent essayer de produire une pyramide verticale comme la suivante, mais c’est un peu plus compliqué (indice: se renseigner sur les tracé xerrorbars):