Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
gnuplot [Le 18/05/2007, 00:12]
81.66.210.63
gnuplot [Le 11/09/2022, 12:04] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 1: Ligne 1:
-{{tag>breezy dapper edgy divers}}+{{tag>calcul_numérique education}}
  
 ---- ----
Ligne 5: Ligne 5:
 ====== Gnuplot ====== ====== Gnuplot ======
  
-===== Introduction ===== 
  
-Gnuplot ​est un package Debian qui est normalement installé par défaut sur la version Dapper, et donc certainement sous Edgy... +**Gnuplot** est une puissante interface pour la représentation graphique de données provenant d'un fichier texte. ​Il peut soit afficher ​l'imagesoit enregistrer une image dans divers formatsy compris LaTeX.
-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érationdiffé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 :  +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, etc.). Le plus simple étant de générer un fichier texte associé au calcul, dans lequel on range les données par colonne. 
-<​code>​ + 
-gnuplot +{{ gnuplot_ellipsoid.png?​direct&​600 |Gnuplot une ellipsoïde}} 
-</​code>​+ 
 + 
 + 
 +===== Pré-requis ===== 
 + 
 +  * Disposer des [[:​sudo|droits d'​administration]]. 
 +  * Disposer d'une connexion à Internet configurée et activée. 
 + 
 + 
 +===== Installation ===== 
 + 
 +**Gnuplot** est possiblement installé par défaut dans certaines versions Ubuntu (mais pas sous [[:​Lucid]]). S'il n'est pas actuellement installé sur votre PC, vous avez plusieurs méthodes. Pour une utilisation ponctuelle, préférer la première. 
 + 
 +==== Depuis les dépôts ==== 
 + 
 +[[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt://​gnuplot|gnuplot]]**. 
 + 
 +[[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt://​gnuplot-x11|gnuplot-x11]]** pour la console vers l'​écran graphique normal. 
 +==== À partir des sources ==== 
 + 
 +Indispensable pour pouvoir profiter des options de [[gnuplot#​Completion Bash et Historique|complétion et d'​historique]]. C'est pour cette raison que cette doc a été écrite. 
 + 
 +Les sources de la dernière version de gnuplot sont disponibles sur [[https://​sourceforge.net/​projects/​gnuplot/​files/​|sourceforge]]. Cette dernière version, numérotée 4.4, apporte plusieurs nouveautés dont l'​intégration d'un terminal lua/tikZ (export vers code LaTeX/tikZ destiné à être compilé via pdfLaTeX pour produire un fichier pdf) et la gestion de la transparence. Ne pas hésiter à jeter un coup d'œil à la documentation et FAQ disponibles (en anglais) sur le [[http://​www.gnuplot.info/​|site officiel]] 
 + 
 +Après avoir téléchargé les sources, se référer au fichier INSTALL contenu dans l'​archive. Afin de bénéficier du terminal tikZ (paquet liblua5.1-0-dev nécessaire) il est important d'​ajouter un lien symbolique par la commande suivante : 
 + 
 +  ln -s /​usr/​lib/​pkgconfig/​lua5.1.pc ​ /​usr/​lib/​pkgconfig/​lua.pc 
 + 
 +Ou bien sur un système 64-bit : 
 + 
 +  ln -s /​usr/​lib/​liblua5.1.so /​usr/​lib/​liblua.so 
 + 
 +L'​installation peut alors se dérouler en se plaçant dans le répertoire issu de la décompression de l'​archive et en utilisant les commandes suivantes : 
 + 
 +  ./​configure 
 +  make 
 +  sudo checkinstall 
 + 
 +===== Utilisation ===== 
 + 
 +Nous rassemblons ici quelques commandes de base pour l'​utilisation de ce logiciel. [[http://​www.gnuplot.info/​documentation.html|Le site officiel]] de Gnuplot est inévitable pour un utilisateur plus exigeant. 
 + 
 + 
 + 
 +==== Directement dans un terminal ==== 
 + 
 +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 : +Gnuplot se lance alors directement dans la fenêtre active du terminal, et on obtient ​quelque chose qui ressemble à ça :
 <​code>​ <​code>​
 alarat@troll:​~/​High_Order$ gnuplot alarat@troll:​~/​High_Order$ gnuplot
Ligne 46: Ligne 91:
 </​code>​ </​code>​
  
-Si vous n'​obtenez pas ça, c'est que Gnuplot n'est pas (est mal) installé. ​+Si vous n'​obtenez pas ça, c'est que Gnuplot n'est pas (ou est mal) installé.
  
-===== Installer Gnuplot =====+Pour créer un graphe, dans cette ligne taper la commande :
  
-Pour installer Gnuplot, vous avez plusieurs choix +<​code>​ 
 +plot '​adresse_du_fichier_a_ploter'​ using colonne_valeurs_abscisse:colonne_valeurs_ordonnee 
 +</​code>​
  
-==== A partir des sources ====+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'.
  
-Vous êtes fort et vous voulez profiter des options ​de complétion et d'historiqueC'est pour cette raison que j'ai écrit ce docRéferez vous à la section ​ +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 : 
-[[gnuplot#​Completion Bash et Historique|Completion Bash et Historique]].+<​code>​ 
 +plot '../​Resultats'​ u 1:5 w l 
 +</​code>​
  
 +Cet exemple peut être essayé avec ce fichier, qui représente diverses fonctions ​ mathématiques (cette commande tracera donc la fonction exponentielle) :
  
-==== Par Synaptics ====+<file gnuplot Resultats>​ 
 +x cos sin log exp 
 +0 1 0 -inf 1 
 +0.1 0.995004 0.0998334 -2.30259 1.10517 
 +0.2 0.980067 0.198669 -1.60944 1.2214 
 +0.3 0.955336 0.29552 -1.20397 1.34986 
 +0.4 0.921061 0.389418 -0.916291 1.49182 
 +0.5 0.877583 0.479426 -0.693147 1.64872 
 +0.6 0.825336 0.564642 -0.510826 1.82212 
 +0.7 0.764842 0.644218 -0.356675 2.01375 
 +0.8 0.696707 0.717356 -0.223144 2.22554 
 +0.9 0.62161 0.783327 -0.105361 2.4596 
 +1 0.540302 0.841471 -1.11022e-16 2.71828 
 +1.1 0.453596 0.891207 0.0953102 3.00417 
 +1.2 0.362358 0.932039 0.182322 3.32012 
 +1.3 0.267499 0.963558 0.262364 3.6693 
 +1.4 0.169967 0.98545 0.336472 4.0552 
 +1.5 0.0707372 0.997495 0.405465 4.48169 
 +1.6 -0.0291995 0.999574 0.470004 4.95303 
 +1.7 -0.128844 0.991665 0.530628 5.47395 
 +1.8 -0.227202 0.973848 0.587787 6.04965 
 +1.9 -0.32329 0.9463 0.641854 6.68589 
 +2 -0.416147 0.909297 0.693147 7.38906 
 +</​file>​ 
 +{{::​gnuplot:​gnuplot2.png?​direct&​200 |}}
  
-Dans Synaptics, chercher Gnuplot, et installer. Si vous ne connaissez pas Synaptic, lisez [[:​synaptic|ça]] ​ 
  
-==== Par ligne de commande ==== 
  
-Dans un terminal, tapez : +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 :
 <​code>​ <​code>​
-sudo apt-get install gnuplot+plot '​../​Resultats'​ u 1:5 w l, '​NouveauResultats'​ u 2:3
 </​code>​ </​code>​
  
-puis donnez le password ​de votre compte utilisateur+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 la coordonnée la plus proche du curseur de la souris. Pour plus d'info sur les raccourcis : 
 +    *  <​code>​ man gnuplot </​code>​ 
 +    *  [[http://​www.gnuplot.info/​documentation.html|La doc officielle de Gnuplot]]
  
 +=== Autre exemple très simple, depuis le terminal (sans fichier de configuration) ===
 +Tapez :
 +<​code>​
 +gnuplot
 +</​code> ​
 +Puis :
 +<​code>​
 +gnuplot> reset
 +gnuplot> set terminal png
 +gnuplot> set output "​exemple_1.png"​
 +gnuplot> set title "Mon titre"
 +gnuplot> plot [t=-4:4] sin(t), cos (t)
 +</​code>​Vous obtenez :
  
-===== Utiliser Gnuplot =====+{{ gnuplot:​exemple_1.png?​direct&​300 }} 
 +<​note>​Le fichier obtenu (exemple1.png) est situé dans votre "​$HOME"</​note>​
  
-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 plusmerci d'​éditer...+^ Code ^ Fonction mathématique ^-^ Code ^ Fonction mathématique ^ 
 +| abs (x)| valeur absolue d’un nombre réel|-| abs (z)| module d’un nombre complexe| 
 +| acos (x) | arc cosinus|-| acosh (x)| arc cosinus hyperbolique| 
 +| arg (z)| argument d’un nombre complexe|-| asin(x)| arc sinus| 
 +| asinh (x)| arc sinus hyperbolique|-| atan (x)| arc tangente de x| 
 +| atan2 (y,x)| arc tangente de y=x|-| atanh (x)| arc tangente hyperbolique| 
 +| besj0 (x)| fonction de Bessel //​j<​sub>​0</​sub>//​|-| besj1 (x)| fonction de Bessel //​j<​sub>​1</​sub>//​| 
 +| besy0 (x)| fonction de Bessel //​y<​sub>​0</​sub>//​|-| besy1 (x)| fonction de Bessel //​y<​sub>​1</​sub>//​| 
 +| ceil (x)| valeur entière supérieure|-| cos (x)| cosinus| 
 +| cosh (x)| cosinus hyperbolique|-| erf (x)| fonction ​d’erreur| 
 +| erfc (x)| fonction d’erreur complémentaire|-| exp (x)| exponentielle| 
 +| floor (x)| valeur entière inférieure|-| gamma (x)| fonction gamma| 
 +| ibeta (a,b,x)| fonction beta incomplète|-| igamma (a,x)| fonction gamma incomplète| 
 +| imag (z)| partie imaginaire d’un nombre complexe|-| int (x)| valeur entière tronquée vers 0| 
 +| inverf (x)| fonction d’erreur réciproque|-| invnorm (x)| fonction quantile de la loi normale N (0; 1)| 
 +| lambertw (x)| fonction W de Lambert|-| lgamma (x)| log de la valeur absolue de la fonction gamma| 
 +| log (x)| logarithme népérien|-| log10 (x)| logarithme décimal| 
 +| norm (x)| fonction de répartition de la loi normale N (0; 1)|-| pi|nombre π (3,14...)| 
 +| rand (x)| nombre au hasard|-| real (z)| partie réelle d’un nombre complexe| 
 +| sgn (x)| fonction signe|-|sin (x)| sinus| 
 +| sinh (x)| sinus hyperbolique|-| sqrt (x)| racine carrée| 
 +| tan (x)| tangente|-| tanh (x)| tangente hyperbolique|
  
-Sinon, pour toute info pointue, se référer au [[http://​www.gnuplot.info/​documentation.html|site officiel]] de Gnuplot. 
  
-==== Directement dans un terminal ​====+^ Code ^ Convention ^ 
 +| x, y| Coordonnées cartésiennes,​ pour de la 2D| 
 +| x, y, z| Coordonnées cartésiennes,​ pour de la 3D| 
 +| r| Coordonnées polaires, pour le rayon vecteur| 
 +| t| Coordonnées polaires, pour l'​angle vecteur (compris entre [0:​2*pi])| 
 +|u| Coordonnées paramétriques,​ pour une courbe| 
 +|u, v| Coordonnées paramétriques,​ pour une surface| 
 + 
 +==== Avec un fichier de configuration ​==== 
 + 
 +En fait Gnuplot est un logiciel extrêmement puissant pour la représentation de données, puisqu'​il est conçu pour être lancé à partir de scripts. On peut donc dans un fichier de configuration,​ rentrer des lignes de commandes Gnuplot qui permettent d'​effectuer des actions en cascades sur un même fichier de données. 
 +  
 +<​note>​ 
 +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. </​note>​ 
 + 
 + 
 +il est possible de donner un nom aux axes et un titre au graphique en envoyant la commande :
  
-Après avoir lancé Gnuplot, on obtient alors la ligne de commande suivante : 
 <​code>​ <​code>​
-gnuplot>+gnuplot ​load nom_du_fichier_config ​
 </​code>​ </​code>​
  
-Pour créer un graphe, dans cette ligne taper la commande ​: +Ce fichier pourrait par exemple contenir ​:
 <​code>​ <​code>​
-plot 'adresse_du_fichier_a_ploter' using colonne_valeurs_abscisse:colonne_valeurs_ordonnee+set terminal jpeg 
 +set output "​Gnuplot5.jpg"​ 
 +set title ' ​Flux en fonction du temps: ​' 
 +set xlabel ' Temps (jj/​mm)'​ 
 +set ylabel ' Flux ' 
 +set xdata time 
 +set timefmt "​%Y-%m-%d"​ 
 +set xtics format "​%d-%m"​ 
 +set style fill transparent solid 0.5 noborder 
 +plot "​flux.dat"​ using 1:2 with lines,\ 
 +     "​flux.dat" ​using 1:3 with boxes lc rgb"​green"​
 </​code>​ </​code>​
 +Créer le fichier de données (l'​extension n'a pas d'​importance) :
 +<file gnuplot flux.dat>​
 +2014-11-10 151 105
 +2014-11-11 140 91
 +2014-11-12 148 91
 +2014-11-13 158 114
 +2014-11-14 144 96
 +2014-11-15 169 106
 +2014-11-16 184 112
 +2014-12-01 157 106
 +2014-12-08 120 86
 +2014-12-10 130 89
 +2014-12-12 147 8</​file>​
 +{{ gnuplot:​gnuplot5.jpg?​direct&​300 |}}
  
-L'​option '​using'​ peut être raccourcie en '​u'​. ​ +===Exemple pour la fonction paramétrique=== 
-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'+<file gnuplot gnuplot2.gnu> 
- +reset 
-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 ​+set terminal png 
 +set parametric 
 +set output ​"essai3.png" 
 +set grid xtics ytics 
 +set samples 300 
 +plot sin(4*t)cos(6*t)</​file>​ 
 +puis :
 <​code>​ <​code>​
-plot '../​Resultats'​ u 1:5 w l+gnuplot 
 +gnuplot> load "​gnuplot2.gnu"
 </​code>​ </​code>​
 +Résultat :
 +{{ ::​gnuplot:​essai4.png?​direct&​300 |}}
  
-Il s'​ouvre alors une nouvelle fenêtre pour l'​affichage du graphique. ​ 
  
 +===Autre exemple de graphique (avec double axe X et Y)===
  
-Maintenantsi 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 graphiqueil faut taper la commande ​+Créer les fichiers : 
 +<file gnuplot LR.dat>​ 
 +# mois température moyenne (°C) Ensoleillement(H) - sources données : http://​www.infoclimat.fr 
 +Jan 5,9 84 
 +Fév 6,9 111 
 +Mar 8,7 174 
 +Avr 11,1 212 
 +Mai 14,3 239 
 +Jun 17,5 272 
 +Jui 19,8 305 
 +Aou 19,6 277 
 +Sep 17,8 218 
 +Oct 14,2 167 
 +Nov 9,4 107 
 +Déc 6,6 85 
 +</​file>​ 
 +<file gnuplot gnuplot3.gnu>​ 
 +reset 
 +set terminal png 
 +set output "La Rochelle.png"​ 
 +set title textcolor rgb "​blue"​ "​Données météorologiques ​de La Rochelle ​de 1961 à 1990\n(données issues de http://​www.infoclimat.fr)" 
 +set key outside below; set key title "Légende";​ set key box reverse; set key box lw 2 lc 4 # Légende 
 +set grid # Grille de fond 
 +set label 1 textcolor rgb "​orange"​ "305 heures"​ at 2,20 centre; set arrow 1 from 3.5,20 to 6,19.2 # Info 
 +set xtics textcolor rgb "​green"​ border ("​Jan"​ 0, "​Fév"​ 1, "​Mar"​ 2, "​Avr"​ 3, "​Mai"​ 4,"​Jun"​ 5,"​Jui"​ 6, "​Aou"​ 7,"​Sep"​ 8,"​Oct"​ 9,"​Nov"​ 10,"​Déc"​ 11) # Mois sur axe des x 
 +set x2range [-1:12]; set x2tics textcolor rgb "​green"​ border ("​1"​ 0"​2"​ 1, "​3"​ 2, "​4"​ 3, "​5"​ 4,"​6"​ 5,"​7"​ 6, "​8"​ 7,"​9"​ 8,"​10"​ 9,"​11"​ 10,"​12"​ 11) # Chiffres sur axe des x2 
 +set ytics textcolor rgb "​red";​ set ylabel textcolor rgb "​red"​ "T. moyennes"​ # Colorisation 
 +set y2label textcolor rgb "​orange"​ "E. moyen";​ set y2tics textcolor rgb "​orange";​ set y2range [70:350]# Colorisation + échelle axe y2 
 +set style fill transparent solid 0.3# Colorisation 
 +plot [-1:12] [4:22] "​LR.dat"​ using 3 axes x1y2 title "​Ensoleillement (h/​mois)"​ with boxes lc rgb "​yellow",​\ 
 +"​LR.dat"​ using 2 title "​Températures (°C)" with linespoints lc rgb "​red"​ 
 +</​file>​ 
 +Sauvegardez les fichiers, puis
 <​code>​ <​code>​
-plot '../​Resultats'​ u 1:5 w l, '​NouveauResultats'​ u 2:3+gnuplot 
 +gnuplot> load "​gnuplot3.gnu"
 </​code>​ </​code>​
 +Voici le résultat :
 +{{ gnuplot:​la_rochelle.png?​direct&​300 |}}
  
-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 +===Autre exemple ​pour un graphique ​3D colorisé=== 
-Ainsisi 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 ​: +<note tip> 
-    ​ <​code>​ man gnuplot </​code>​ +Pour les graphiques en **2D**la commande est : "​**plot** xxxx xxxxx", 
-    ​ ​[[http://​www.gnuplot.info/documentation.html|La doc officielle de Gnuplot]]+mais pour les graphiques ​en **3D**il faut utiliser : "​**splot** xxxx xxxxx"​ 
 +et pour imprimer plusieurs graphiques ​sur une même page, renseigner ​"**multiplot** xxxx xxxxx". 
 +</note>
  
 +Fichier avec données :
 +<file gnuplot mon_fichier.gnu>​
 +reset
 +set terminal png
 +set output "​essai1.png" ​ # Nom du fichier de sortie
 +set title textcolor rgb "​red"​ "Mon exemple" ​ # Titre du graphique, de couleur rouge
 +set xlabel "Mes données 1" ​ # Nom de l'axe x
 +set ylabel textcolor rgb "​green"​ "Mes données 2" ​ #Nom de l'axe y, de couleur verte
 +set zlabel offset +5,+4 "Mes données 3" ​ # Nom de l'axe z et repositionnement au-dessus
 +r(x,​y)=sqrt(x**2+y**2)
 +f(x,​y)=sin(r(x,​y))/​r(x,​y)
 +set pm3d  # Colorisation de la surface
 +set hidden3d ​ # Masquage du quadrillage
 +set isosamples 80,80  # Dimensionnement des entre-axes de la surface
 +splot f(x,y) with pm3d at s  # Création du graphique 3D, avec splot
 +</​file>​
 +Puis :
 +<​code>​
 +gnuplot
 +gnuplot> load "​mon_fichier.gnu"​
 +</​code>​
 +Voilà :
 +{{ gnuplot:​essai3.png?​direct&​300 |}}
  
  
-==== Avec un fichier de config ​==== +==== À partir d'un programme en C  ​====
- +
-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... +
- +
-voici un petit '​main.c'​ permettant d appeler gnuplot et de lui faire tracer le contenu d un fichier texte (premiere colone: x deuxieme: y). ici ce fichier s'​appel flux.flx et il se trouve dans : /​home/​yoann/​Desktop/​prog/​test/​gnuplotest.+
  
 +Voici un exemple en deux fichiers, l'un pour le code C :
  
 +<file C gnuplot.c>​
 #include <​stdio.h>​ #include <​stdio.h>​
 #include <​stdlib.h>​ #include <​stdlib.h>​
 +
 #define GNUPLOT_PATH "/​usr/​bin/​gnuplot"​ #define GNUPLOT_PATH "/​usr/​bin/​gnuplot"​
 +
 int main() int main()
 { {
         FILE *gp;         FILE *gp;
 +
         gp = popen(GNUPLOT_PATH,​ "​w"​);​         gp = popen(GNUPLOT_PATH,​ "​w"​);​
-         if(gp == NULL){+        ​if(gp == NULL){
             fprintf(stderr,​ "Oops, I can't find %s.", GNUPLOT_PATH);​             fprintf(stderr,​ "Oops, I can't find %s.", GNUPLOT_PATH);​
              ​exit(EXIT_FAILURE);​              ​exit(EXIT_FAILURE);​
         }         }
-        fprintf(gp, "cd '/home/yoann/Desktop/​prog/​test/​gnuplotest'​\n ​plot '​flux.flx'​ with lines\n"​); ​/* on envoie ce qu'on veut ca pourai etre a la place du plot load suivi du fichier contenant les comandes qu'il doit executer */ +        fprintf(gp, "cd '~/​Desktop'​\n ​load \"​config\"​\n"​);​ 
-          fflush(gp); /* ne pas oublier. */+          fflush(gp); /* On oublie ​pas le buffer. */
           getchar();           getchar();
           pclose(gp);           pclose(gp);
 +
 exit(EXIT_SUCCESS);​ exit(EXIT_SUCCESS);​
 } }
  
-il est possible de donner un nom aux axes et un titre au graphique en envoyant a gnuplot load nom_du_fichier_config:​ ce fichier pourrait par exemple contenir :+</​file>​
  
-set title ' Flux en fonction du temps: ​+Dans la 7eme ligne de main, on demande à gnuplot d'exécuter des instructions. 
-set xlabel ​' ​Temps (jj/mm) / (HH/​MM)'​ +D'abord il change de répertoire,​ puis il charge le fichier config.
-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+
  
-ps: je n'arrive pas a bien mettre la fenetre pour le code si quelqu'​un peut s en charger...+Vous aurez compris que config est l'autre fichier, il contient des instructions gnuplotPar exemple :
  
-===== Complétion Bash et Historique ======+<file bash config>​ 
 +# fichier modèle d'​utilisation de gnuplot 
 +# vous pouvez aussi l'​utiliser simplement en faisant en ligne de commande : 
 +# gnuplot monfichier
  
-==== Démarche ====+set terminal X11 
 +set size 0.8,0.8 
 +set nokey
  
-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 ! +set xrange [-0.1:10] 
 +#set yrange [0:110] 
 +M=3 
 +k=3 
 +plot (1-exp(-k*x)) 
 +pause -1 "Faire retour"​ # permet d'attendre ​que l'utilisateur ait vu la figure  ​quand on fait une sortie X11 
 +</​file>​
  
-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 GnuplotPar contre, ​ce tuto est tout à fait autorisé, ​et vous avez le droit de suivre ses instructions pour une utilisation personelle du logiciel ! +Les lignes commençant ​par # sont des commentairesCopiez ​ce fichier sur votre bureau ​et appelez-le config.
  
-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 requisesVous 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.+====À partir d'un programme ​en Python ==== 
 +Il faut utiliser le module http://​gnuplot-py.sourceforge.net/
  
-==== Sources ====+Exemple de génération d'un PNG contenant 3 courbes en utilisant la fonction **_add_to_queue** : 
 +<file python gnuplot.py>​ 
 +#​!/​usr/​bin/​python
  
-Avant de télécharger les sourcesbien verifier d'​abord que /​etc/​apt/​sources.list +from numpy import * 
-contient l'​adresse des dépôts "​sources"​ officiels, c'est à dire :+import GnuplotGnuplot.funcutils
  
-<​code>​ +g = Gnuplot.Gnuplot(debug=1)
-## 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 +
-</​code>​+
  
-Si nonalors dans un terminaltaper : +a = Gnuplot.Data(([1,1][2,2], [3,​3]),​title="​A"​) 
 +b = Gnuplot.Data(([1,​1],​ [2,4], [3,​9]),​title="​B"​) 
 +c = Gnuplot.Data(([1,​0.5],​ [2,1], [3,​1.5]),​title="​C"​)
  
-<​code>​ 
-sudo cp /​etc/​apt/​sources.list /​etc/​apt/​sources.list.bak 
-</​code>​ 
  
-Cette dernière ligne permet de créer un sauvegardeAinsisi vous faîtes une connerievous pourrez revenir à la configuration initiale avec +g('set output "/​tmp/​myGraph.png"'​) 
 +g('set terminal png small ') 
 +l = [] 
 +for i in (a,b,c): 
 +    l.append(i)
  
-<​code>​ +g._add_to_queue(l) 
-sudo cp /​etc/​apt/​sources.list.bak /​etc/​apt/​sources.list +g.replot()
-</​code>​+
  
-Puis : +</file
-<code+ 
-sudo gedit /​etc/​apt/​sources.list +===== Complétion Bash et historique ======
-</​code>​+
  
-Y copier les lignes ci-dessus, enregistrer,​ fermer et recharger les dépôts par la commande :  
-<​code>​ 
-sudo apt-get update 
-</​code>​ 
  
-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 :  +==== Démarche ==== 
-<​code> ​ + 
-cd /​usr/​local/​src+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 de mettre ici un lien vers un paquet compilé à 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 personnelle 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 compiler avec les options nécessaires,​ en faisant bien attention aux dépendances requises. Vous obtiendrez alors un nouveau paquet qu'il vous suffira d'​installer sur votre distribution. Enfin, il faudra bloquer la version de votre nouveau Gnuplot, afin que vos gestionnaires de mises à jour ne détruisent pas votre travail à chaque mise à niveau. 
 + 
 +==== Sources ==== 
 + 
 +Tout d'​abord,​ si ce n'est pas déjà fait, [[tutoriel:​comment_modifier_sources_maj|ajouter le dépôt-source]] **[[depots#​universe_et_multiverse|universe]]** dans vos dépôts. 
 + 
 +On peut maintenant ​obtenir ​les sources ​du logiciel. Se placer dans /​usr/​local/​src (ceci n'est pas obligatoire) et y télécharger les sources de **Gnuplot** 
 +<​code>​ cd /​usr/​local/​src
 sudo apt-get source gnuplot sudo apt-get source gnuplot
 </​code>​ </​code>​
  
-==== 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 : +==== Nouveau paquet ​Gnuplot ​====
-<​code>​ +
-sudo apt-get install libreadline5 libreadline5-dev libxt-dev libgd2-noxpm-dev debhelper texinfo +
-</​code> ​+
  
-Puis aller dans le répertoire /​etc/​apt/​src/​gnuplot-*.*.*/​debian/​ (les étoiles correspondant à la version) : +Tout d'​abord,​ [[tutoriel:​comment_installer_un_paquet|installer]] la bibliothèque **[[apt://​readline|readline]]** et les dépendances qui permettront de compiler le paquet Gnuplot avec les options de complétion et d'​historique : [[:​tutoriel:​comment_installer_un_paquet|installez les paquets]] 
 +**[[apt://​libreadline5|libreadline5]] [[apt://​libreadline5-dev|libreadline5-dev]] [[apt://​ibxt-dev|ibxt-dev]] [[apt://​libgd2-noxpm-dev|libgd2-noxpm-dev]] [[apt://​debhelper|debhelper]] [[apt://​texinfo|texinfo]] [[apt://​tetex-bin|tetex-bin]] [[apt://​tetex-extra|tetex-extra]]**. 
 + 
 +<​note>​Dans une dernière utilisation de ce tuto, j'ai du ré-installer **gcc**. Ça m'a semblé bizarre que ce dernier ne soit pas par défaut dans cette Xubuntu Dapper Drake.</​note>​ 
 + 
 +Puis aller dans le répertoire /​etc/​apt/​src/​gnuplot-*.*.*/​debian/​ (les étoiles correspondant à la version) :
 <​code>​ <​code>​
 cd /​usr/​local/​src/​gnuplot-*.*.*/​debian/​ cd /​usr/​local/​src/​gnuplot-*.*.*/​debian/​
 </​code> ​ </​code> ​
  
-Editer ​le fichier ​'​rules'​ :  +[[:​tutoriel:​comment_editer_un_fichier|Éditer ​le fichier]] **rules**.
-<​code>​ +
-sudo gedit rules +
-</​code> ​+
  
 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. 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 : +On obtient ainsi le paragraphe :
 <​code>​ <​code>​
 config.status:​ configure config.status:​ configure
Ligne 241: Ligne 466:
 </​code> ​ </​code> ​
  
-Remonter dans le dossier père et compiler le package ​+Remonter dans le dossier père et compiler le paquet ​:
 <​code>​ <​code>​
 cd .. cd ..
Ligne 247: Ligne 472:
 </​code>​ </​code>​
  
-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.+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 [[tutoriel:​comment_installer_un_paquet|installer]], et recompiler. La compilation prend quelques minutes (selon les architectures...). Merci de signaler d'​éventuelles difficultés.
  
-==== Installer le nouveau package ==== 
  
-Remonter encore d'un dossier et installer ​le nouveau paquet ​:  +==== Installer ​le nouveau paquet ​====
-<​code>​ +
-cd .. +
-sudo dpkg -i gnuplot-*.deb +
-</​code>​+
  
-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 à :  +Remonter encore d'un dossier et installer le nouveau paquet : 
-<​code>​ + 
-cd /​usr/​local/​src/​ +  cd .. 
-sudo dpkg -i gnuplot-*.deb +  sudo dpkg -i gnuplot-*.deb 
-</​code>​+ 
 +Les fichiers .deb sont les fichiers du nouveau ​paquet ​Gnuplot. Conservez-les précieusement,​ car Gnuplot rentre désormais en conflit avec vos gestionnaires de mises à jour. En effet, ils considèrent que votre nouvelle version de Gnuplot est antérieure à celle disponible ​dans les dépôts. Il est possible que par une fausse manipulation vous remettiez à jour Gnuplot. Vous perdriez ​alors la complétion ​et l'​historique. Vous pourrez les remettre en service grâce à : 
 + 
 +  cd /​usr/​local/​src/​ 
 +  sudo dpkg -i gnuplot-*.deb
  
-La seule parade au problème que j'ai pu trouvée et 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 [[utilisateurs:​laden|profil]]. Et, bien sûr, d'​éditer ce tuto !  
  
 ==== Bloquer les mises à jour ==== ==== 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 proposC'est fort dommage, et je ne suis certainement pas assez fort pour en faire uneJ'ai cependant une solution :+Voici une solution possible pour geler le paquet gnuplot ​à son état actuel. Il existe certainement d'autres manières, peut-être plus simplesMerci d'en faire profiter tout le monde.
  
-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.+Jusqu'à [[:​hardy]], ​poser un '​hold'​ sur les paquets Gnuplot dans [[aptitude]] ou  [[Synaptic]], ne résoud pas le problème : gnuplot-nox ​apparait ​systématiquement dans le gestionnaire ​de mise-à-jour (quel qu'il soit). 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. ​+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 :+Dans un terminal, taper :
 <​code>​ <​code>​
 sudo dselect sudo dselect
Ligne 295: Ligne 518:
  
 Version 1.13.11 (i386). Version 1.13.11 (i386).
 +
 +
 Copyright (C) 1994-1996 Ian Jackson. Copyright (C) 1994-1996 Ian Jackson.
 Copyright (C) 2000,2001 Wichert Akkerman. Copyright (C) 2000,2001 Wichert Akkerman.
Ligne 319: Ligne 544:
  </​code>​  </​code>​
  
-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. +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+   * Se placer sur chacune des lignes et taper « ». Cette action ​« hold » les packages à leur version actuelle
    * On obtient alors :     * On obtient alors : 
 <​code>​ <​code>​
Ligne 331: Ligne 556:
  
 Il faut maintenant quitter dselect : Il faut maintenant quitter dselect :
-   * Taper 'Entrée'+   * Taper « Entrée ​»
-   * Normalement,​ on arrive dans l'aide qui vous demande de taper sur 'space' ​pour quitter. Taper sur la barre d'​espace. +   * 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'+   * Taper à nouveau sur « Entrée ​»
-   * On est revenu au menu initial. Descendre à la ligne 6. par les flèches ou en tapant ​'Q' +   * On est revenu au menu initial. Descendre à la ligne 6. par les flèches ou en tapant ​« ». 
-   * C'est gagné. Normalement aucun des gestionnaires de mise-à-jour n'​accepte de mettre Gnuplot à jour ;-) +   * C'est gagné. Normalementaucun des gestionnaires de mise à jour n'​accepte de mettre Gnuplot à jour;-) 
 + 
 +=====Quelques exemples (différentes possibilités)===== 
 +<file gnuplot essai5.gnu>​ 
 +reset 
 +set terminal jpeg 
 +set output "​essai5.jpg"​ 
 +set key off 
 +set xrang [0:10] 
 +set yrang [0:10] 
 +set style line 12 lt rgb "​blue"​ 
 +set style fill solid 0.6 
 +set object 1 rectangle at 1,1 size 8,2 fc rgb "​yellow"​ 
 +set object 2 circle at 4,6.2 radius 2 fc rgb "​orange"​ front 
 +set object 3 ellipse at 6,2.5 size 3,8 angle 40 fc rgb "​blue"​ 
 +set object 4 polygon from 8.6,4 to 8.6,8 to 8.2,8 to 9.2,9.6 \ 
 +to 10,8 to 9.6,8 to 9.6,4 to 8.6,4 
 +plot NaN </​file>​ 
 + 
 +{{::​gnuplot:​essai5.jpg?​direct 300|}} 
 + 
 +Source [[https://​commons.wikimedia.org/​wiki/​File:​Bielefeld_population.svg?​uselang=fr|Wikipédia (licence domaine publique)]] 
 +{{::​gnuplot:​population.jpg ?direct 300|}} 
 + 
 + 
 +Source [[https://​commons.wikimedia.org/​wiki/​File:​Mathc_art_01.jpg?​uselang=fr?​uselang=fr|Wikipédia (licence domaine publique)]] 
 +{{ ::​gnuplot:​Mathc_art_01.jpg?​direct 300|}}
  
  
 +Source [[https://​commons.wikimedia.org/​wiki/​File:​Signal_5.svg?​uselang=fr?​uselang=fr|Wikipédia (licence domaine publique)]]
 +{{ ::​gnuplot:​signal_5.jpg?​direct 300|}}
  
 +===== Voir aussi =====
 +  * [[Matplotlib]]
 +  * **(en)** [[http://​www.gnuplot.info/​|Le site officiel]]
 +  * (fr) [[http://​enseignement.ensi-bourges.fr/​cours/​GNUPLOT/​document/​gnuplot.html|Cours sur Gnuplot]]
 +  * (fr) [[http://​perso.ensta-paristech.fr/​~kielbasi/​docs/​gnuplot.pdf|Aide - mémoire Gnuplot 4.0 de Nicolas Kielbasiewicz]]
 +  * (fr) [[https://​bdesgraupes.pagesperso-orange.fr/​UPX/​Tutoriels/​presentation_gnuplot.pdf|Tutoriel Gnuplot - Bernard Desgraupes - Université Paris Ouest]]
 +  * (fr) [[http://​enseignement.ensi-bourges.fr/​cours/​GNUPLOT/​document/​gnuplot.html|Tutoriel Gnuplot]] FIXME lien inaccessible,​ le 2/03/2018
  
 ---- ----
  
 //​Contributeur : [[utilisateurs:​laden]].//​ //​Contributeur : [[utilisateurs:​laden]].//​
  • gnuplot.1179439950.txt.gz
  • Dernière modification: Le 18/05/2007, 00:14
  • (modification externe)