Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| gnuplot [Le 24/07/2008, 14:55] – laden | gnuplot [Le 15/05/2025, 14:44] (Version actuelle) – Ajout graph exemple G-Tux | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag>Dapper Edgy Feisty Gutsy mathématiques BROUILLON}} | + | {{tag>calcul_numérique education}} |
| ---- | ---- | ||
| Ligne 6: | Ligne 6: | ||
| + | **Gnuplot** est une puissante interface pour la représentation graphique de données provenant d'un fichier texte. Il peut soit afficher l' | ||
| - | ===== Introduction ===== | ||
| - | |||
| - | **Gnuplot** est un paquet 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. Il peut soit afficher l' | ||
| 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' | 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' | ||
| - | Pour lancer Gnuplot, dans un terminal, taper : | + | {{ gnuplot_ellipsoid.png? |
| + | |||
| + | |||
| + | |||
| + | ===== Pré-requis ===== | ||
| + | |||
| + | * Disposer des [[: | ||
| + | * 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 [[: | ||
| + | |||
| + | ==== Depuis les dépôts ==== | ||
| + | |||
| + | [[: | ||
| + | |||
| + | [[: | ||
| + | ==== À partir des sources ==== | ||
| + | |||
| + | Indispensable pour pouvoir profiter des options de [[gnuplot# | ||
| + | |||
| + | Les sources de la dernière version de gnuplot sont disponibles sur [[https:// | ||
| + | |||
| + | Après avoir téléchargé les sources, se référer au fichier INSTALL contenu dans l' | ||
| + | |||
| + | ln -s / | ||
| + | |||
| + | Ou bien sur un système 64-bit : | ||
| + | |||
| + | ln -s / | ||
| + | |||
| + | L' | ||
| + | |||
| + | ./ | ||
| + | make | ||
| + | sudo checkinstall | ||
| + | |||
| + | ===== Utilisation ===== | ||
| + | |||
| + | Nous rassemblons ici quelques commandes de base pour l' | ||
| + | |||
| + | |||
| + | |||
| + | ==== Directement dans un terminal ==== | ||
| + | |||
| + | Pour lancer Gnuplot, dans un [[:terminal]], taper : | ||
| gnuplot | gnuplot | ||
| Ligne 47: | Ligne 91: | ||
| </ | </ | ||
| - | Si vous n' | + | Si vous n' |
| - | + | ||
| - | ===== Installer Gnuplot ===== | + | |
| - | + | ||
| - | Si **Gnuplot** n'est pas déjà installé sur votre machine, vous avez plusieurs méthodes. Pour une utilisation ponctuelle, préférer la première. | + | |
| - | + | ||
| - | ==== Méthode classique ==== | + | |
| - | + | ||
| - | [[: | + | |
| - | + | ||
| - | + | ||
| - | ==== À partir des sources ==== | + | |
| - | + | ||
| - | Indispensable pour pouvoir profiter des options de complétion et d' | + | |
| - | [[gnuplot# | + | |
| - | + | ||
| - | + | ||
| - | ===== Utiliser Gnuplot ===== | + | |
| - | + | ||
| - | Nous rassemblons ici quelques commandes de base pour l' | + | |
| - | + | ||
| - | + | ||
| - | ==== 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 : | Pour créer un graphe, dans cette ligne taper la commande : | ||
| Ligne 82: | Ligne 99: | ||
| </ | </ | ||
| - | L' | + | L' |
| Par défaut, Gnuplot représente un nuage de points. Pour obtenir une ligne brisée, il faut ajouter l' | Par défaut, Gnuplot représente un nuage de points. Pour obtenir une ligne brisée, il faut ajouter l' | ||
| - | Ainsi, pour afficher la ligne brisée représentant la cinquième colonne en fonction de la première colonne du fichier " | + | Ainsi, pour afficher la ligne brisée représentant la cinquième colonne en fonction de la première colonne du fichier " |
| < | < | ||
| plot ' | plot ' | ||
| </ | </ | ||
| - | Il s' | + | Cet exemple peut être essayé avec ce fichier, qui représente diverses fonctions |
| + | <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 | ||
| + | </ | ||
| + | {{:: | ||
| - | Maintenant, si on veut rajouter le nuage de points représentant la troisième colonne en fonction de la deuxième colonne du fichier " | + | |
| + | |||
| + | Il s' | ||
| + | |||
| + | |||
| + | Maintenant, si on veut rajouter le nuage de points représentant la troisième colonne en fonction de la deuxième colonne du fichier " | ||
| < | < | ||
| plot ' | plot ' | ||
| </ | </ | ||
| - | Il existe des raccourcis clavier pour activer des options directement sur la fenêtre de représentation graphique. | + | Il existe des raccourcis clavier pour activer des options directement sur la fenêtre de représentation graphique. |
| Ainsi, si l'on tape ' | Ainsi, si l'on tape ' | ||
| * < | * < | ||
| * [[http:// | * [[http:// | ||
| + | === Autre exemple très simple, depuis le terminal (sans fichier de configuration) === | ||
| + | Tapez : | ||
| + | < | ||
| + | gnuplot | ||
| + | </ | ||
| + | Puis : | ||
| + | < | ||
| + | gnuplot> reset | ||
| + | gnuplot> set terminal png | ||
| + | gnuplot> set output " | ||
| + | gnuplot> set title "Mon titre" | ||
| + | gnuplot> plot [t=-4:4] sin(t), cos (t) | ||
| + | </ | ||
| + | |||
| + | {{ gnuplot: | ||
| + | < | ||
| + | |||
| + | |||
| + | ^ 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 // | ||
| + | | besy0 (x)| fonction de Bessel // | ||
| + | | 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| | ||
| + | |||
| + | |||
| + | ^ Code ^ Convention ^ | ||
| + | | x, y| Coordonnées cartésiennes, | ||
| + | | x, y, z| Coordonnées cartésiennes, | ||
| + | | r| Coordonnées polaires, pour le rayon vecteur| | ||
| + | | t| Coordonnées polaires, pour l' | ||
| + | |u| Coordonnées paramétriques, | ||
| + | |u, v| Coordonnées paramétriques, | ||
| ==== Avec un fichier de configuration ==== | ==== Avec un fichier de configuration ==== | ||
| - | En fait Gnuplot est un logiciel extrêmement puissant pour la représentation de données, puisqu' | + | En fait Gnuplot est un logiciel extrêmement puissant pour la représentation de données, puisqu' |
| < | < | ||
| Ligne 112: | Ligne 208: | ||
| - | il est possible de donner un nom aux axes et un titre au graphique en envoyant la commande : | + | il est possible de donner un nom aux axes et un titre au graphique en envoyant la commande : |
| < | < | ||
| Ligne 119: | Ligne 215: | ||
| Ce fichier pourrait par exemple contenir : | Ce fichier pourrait par exemple contenir : | ||
| - | |||
| < | < | ||
| + | set terminal jpeg | ||
| + | set output " | ||
| set title ' Flux en fonction du temps: ' | set title ' Flux en fonction du temps: ' | ||
| - | set xlabel ' Temps (jj/mm) / (HH/MM)' | + | set xlabel ' Temps (jj/ |
| set ylabel ' Flux ' | set ylabel ' Flux ' | ||
| set xdata time | set xdata time | ||
| - | set timefmt "%d%m%H%M" | + | set timefmt "%Y-%m-%d" |
| - | set format | + | set xtics format "%d-%m" |
| - | plot "flux.flx" using 1:2 with lines | + | set style fill transparent solid 0.5 noborder |
| + | plot "flux.dat" using 1:2 with lines,\ | ||
| + | " | ||
| </ | </ | ||
| + | Créer le fichier de données (l' | ||
| + | <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</ | ||
| + | {{ gnuplot: | ||
| + | ===Exemple pour la fonction paramétrique=== | ||
| + | <file gnuplot gnuplot2.gnu> | ||
| + | reset | ||
| + | set terminal png | ||
| + | set parametric | ||
| + | set output " | ||
| + | set grid xtics ytics | ||
| + | set samples 300 | ||
| + | plot sin(4*t), cos(6*t)</ | ||
| + | puis : | ||
| + | < | ||
| + | gnuplot | ||
| + | gnuplot> load " | ||
| + | </ | ||
| + | Résultat : | ||
| + | {{ :: | ||
| + | |||
| + | |||
| + | ===Autre exemple de graphique (avec double axe X et Y)=== | ||
| + | |||
| + | Créer les fichiers : | ||
| + | <file gnuplot LR.dat> | ||
| + | # mois température moyenne (°C) Ensoleillement(H) - sources données : http:// | ||
| + | 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 gnuplot gnuplot3.gnu> | ||
| + | reset | ||
| + | set terminal png | ||
| + | set output "La Rochelle.png" | ||
| + | set title textcolor rgb " | ||
| + | set key outside below; set key title " | ||
| + | set grid # Grille de fond | ||
| + | set label 1 textcolor rgb " | ||
| + | set xtics textcolor rgb " | ||
| + | set x2range [-1:12]; set x2tics textcolor rgb " | ||
| + | set ytics textcolor rgb " | ||
| + | set y2label textcolor rgb " | ||
| + | set style fill transparent solid 0.3# Colorisation | ||
| + | plot [-1:12] [4:22] " | ||
| + | " | ||
| + | </ | ||
| + | Sauvegardez les fichiers, puis | ||
| + | < | ||
| + | gnuplot | ||
| + | gnuplot> load " | ||
| + | </ | ||
| + | Voici le résultat : | ||
| + | {{ gnuplot: | ||
| + | |||
| + | ===Autre exemple pour un graphique 3D colorisé=== | ||
| + | <note tip> | ||
| + | Pour les graphiques en **2D**, la commande est : " | ||
| + | mais pour les graphiques en **3D**, il faut utiliser : " | ||
| + | et pour imprimer plusieurs graphiques sur une même page, renseigner : " | ||
| + | </ | ||
| + | |||
| + | Fichier avec données : | ||
| + | <file gnuplot mon_fichier.gnu> | ||
| + | reset | ||
| + | set terminal png | ||
| + | set output " | ||
| + | set title textcolor rgb " | ||
| + | set xlabel "Mes données 1" | ||
| + | set ylabel textcolor rgb " | ||
| + | set zlabel offset +5,+4 "Mes données 3" | ||
| + | r(x, | ||
| + | f(x, | ||
| + | set pm3d # Colorisation de la surface | ||
| + | set hidden3d | ||
| + | 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 | ||
| + | </ | ||
| + | Puis : | ||
| + | < | ||
| + | gnuplot | ||
| + | gnuplot> load " | ||
| + | </ | ||
| + | Voilà : | ||
| + | {{ gnuplot: | ||
| Ligne 136: | Ligne 339: | ||
| Voici un exemple en deux fichiers, l'un pour le code C : | Voici un exemple en deux fichiers, l'un pour le code C : | ||
| - | <code C> | + | <file C gnuplot.c> |
| #include < | #include < | ||
| #include < | #include < | ||
| Ligne 159: | Ligne 362: | ||
| } | } | ||
| - | </code> | + | </file> |
| - | Dans la 7eme ligne de main, on demande | + | Dans la 7eme ligne de main, on demande |
| - | D' | + | D' |
| Vous aurez compris que config est l' | Vous aurez compris que config est l' | ||
| - | <code> | + | <file bash config> |
| # fichier modèle d' | # fichier modèle d' | ||
| # vous pouvez aussi l' | # vous pouvez aussi l' | ||
| Ligne 181: | Ligne 384: | ||
| plot (1-exp(-k*x)) | plot (1-exp(-k*x)) | ||
| pause -1 "Faire retour" | pause -1 "Faire retour" | ||
| - | </code> | + | </file> |
| - | Les lignes commençant par # sont des commentaires. Copiez ce fichier sur votre bureau et appellez | + | Les lignes commençant par # sont des commentaires. Copiez ce fichier sur votre bureau et appelez-le config. |
| + | |||
| + | ====À partir d'un programme en Python ==== | ||
| + | Il faut utiliser le module http:// | ||
| + | |||
| + | Exemple de génération d'un PNG contenant 3 courbes en utilisant la fonction **_add_to_queue** : | ||
| + | <file python gnuplot.py> | ||
| + | # | ||
| + | |||
| + | from numpy import * | ||
| + | import Gnuplot, Gnuplot.funcutils | ||
| + | |||
| + | g = Gnuplot.Gnuplot(debug=1) | ||
| + | |||
| + | a = Gnuplot.Data(([1, | ||
| + | b = Gnuplot.Data(([1, | ||
| + | c = Gnuplot.Data(([1, | ||
| + | |||
| + | |||
| + | g('set output "/ | ||
| + | g('set terminal png small ') | ||
| + | l = [] | ||
| + | for i in (a,b,c): | ||
| + | l.append(i) | ||
| + | |||
| + | g._add_to_queue(l) | ||
| + | g.replot() | ||
| + | |||
| + | </ | ||
| ===== Complétion Bash et historique ====== | ===== Complétion Bash et historique ====== | ||
| Ligne 190: | Ligne 421: | ||
| ==== Démarche ==== | ==== Démarche ==== | ||
| - | 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 package recompilé | + | 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é |
| - | Pour activer la complétion et l' | + | Pour activer la complétion et l' |
| ==== Sources ==== | ==== Sources ==== | ||
| Ligne 198: | Ligne 429: | ||
| Tout d' | Tout d' | ||
| - | On peut maintenant obtenir les sources du logiciel. Se placer dans / | + | On peut maintenant obtenir les sources du logiciel. Se placer dans / |
| < | < | ||
| sudo apt-get source gnuplot | sudo apt-get source gnuplot | ||
| </ | </ | ||
| - | ==== Nouveau package Gnuplot ==== | ||
| - | Tout d' | + | ==== Nouveau paquet Gnuplot ==== |
| + | |||
| + | Tout d' | ||
| **[[apt:// | **[[apt:// | ||
| < | < | ||
| - | Puis aller dans le répertoire / | + | Puis aller dans le répertoire / |
| < | < | ||
| cd / | cd / | ||
| Ligne 217: | Ligne 449: | ||
| [[: | [[: | ||
| - | et remplacer l' | + | et remplacer l' |
| - | On obtient ainsi le paragraphe : | + | On obtient ainsi le paragraphe : |
| < | < | ||
| config.status: | config.status: | ||
| Ligne 234: | Ligne 466: | ||
| </ | </ | ||
| - | Remonter dans le dossier père et compiler le paquet : | + | Remonter dans le dossier père et compiler le paquet : |
| < | < | ||
| cd .. | cd .. | ||
| Ligne 243: | Ligne 475: | ||
| - | ==== Installer le nouveau | + | ==== Installer le nouveau |
| - | Remonter encore d'un dossier et installer le nouveau paquet : | + | Remonter encore d'un dossier et installer le nouveau paquet : |
| cd .. | cd .. | ||
| sudo dpkg -i gnuplot-*.deb | sudo dpkg -i gnuplot-*.deb | ||
| - | Les fichiers .deb sont les fichiers du nouveau | + | Les fichiers .deb sont les fichiers du nouveau |
| cd / | cd / | ||
| Ligne 258: | Ligne 490: | ||
| ==== Bloquer les mises à jour ==== | ==== Bloquer les mises à jour ==== | ||
| - | Voici une solution possible pour geler le package | + | Voici une solution possible pour geler le paquet |
| Jusqu' | Jusqu' | ||
| - | Il n'y a pour l' | + | Il n'y a pour l' |
| Dans un terminal, taper : | Dans un terminal, taper : | ||
| Ligne 286: | 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 310: | Ligne 544: | ||
| </ | </ | ||
| - | Les trois étoiles en début de ligne marquent l' | + | Les trois étoiles en début de ligne marquent l' |
| * 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 | ||
| Ligne 327: | Ligne 561: | ||
| * 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 « Q ». | ||
| * C'est gagné. Normalement, | * C'est gagné. Normalement, | ||
| + | |||
| + | =====Quelques exemples (différentes possibilités)===== | ||
| + | <file gnuplot essai5.gnu> | ||
| + | reset | ||
| + | set terminal jpeg | ||
| + | set output " | ||
| + | set key off | ||
| + | set xrang [0:10] | ||
| + | set yrang [0:10] | ||
| + | set style line 12 lt rgb " | ||
| + | set style fill solid 0.6 | ||
| + | set object 1 rectangle at 1,1 size 8,2 fc rgb " | ||
| + | set object 2 circle at 4,6.2 radius 2 fc rgb " | ||
| + | set object 3 ellipse at 6,2.5 size 3,8 angle 40 fc rgb " | ||
| + | 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 </ | ||
| + | |||
| + | {{:: | ||
| + | |||
| + | Source [[https:// | ||
| + | {{:: | ||
| + | |||
| + | |||
| + | Source [[https:// | ||
| + | {{ :: | ||
| + | |||
| + | |||
| + | Source [[https:// | ||
| + | {{ :: | ||
| + | |||
| + | {{ :: | ||
| + | ===== Voir aussi ===== | ||
| + | * [[Matplotlib]] | ||
| + | * **(en)** [[http:// | ||
| + | * (fr) [[http:// | ||
| + | * (fr) [[http:// | ||
| + | * (fr) [[https:// | ||
| + | * (fr) [[http:// | ||
| ---- | ---- | ||
| // | // | ||
