Autres sections : General - LaTeX - emacs
Cette section :
Soit avec
Pour du traitement d'image plus compliqué je recommande
gimp. Il n'est actuellement disponible que sur liasun13.
gnuplot ou matlab (sur
liasun13). gnuplot est le plus simple. Il permet de
tracer des fonctions et des données en 2D et 3D.
L'utilisation la plus courante est le dessin 2D de données. Il
suffit alors d'avoir un fichier avec une coordonnée par colonne,
de lancer gnuplot et de taper
plot "mon_fichier"
Si on veut plusieurs courbes, c'est très similaire. Si les
différentes courbes sont dans des fichiers différents on fait
plot "mon_fichier1", "mon_fichier2",
"mon_fichier3"
et si ce sont différentes colonnes d'un même fichier, par
exemple les x1 en 3ieme colonne, les y1 en 1ere colonne, les x2
en 5ieme colonne et les y2 en 6ieme colonne, on fait
plot "mon_fichier1" u 3:1, "mon_fichier1" u 5:6
gnuplot permet de faire beaucoup d'autres choses et bien souvent d'avoir exactement le graphique que vous désirez. Voir la doc et/ou me consulter si nécessaire.
Il faut pour cela recoder la fonte utilisée. Cela se fait en deux étapes :
Pour définir les macros il suffit d'ajouter ceci :
/encoding_vector [
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/space /exclam /quotedbl /numbersign
/dollar /percent /ampersand /quoteright
/parenleft /parenright /asterisk /plus
/comma /minus /period /slash
/zero /one /two /three
/four /five /six /seven
/eight /nine /colon /semicolon
/less /equal /greater /question
/at /A /B /C
/D /E /F /G
/H /I /J /K
/L /M /N /O
/P /Q /R /S
/T /U /V /W
/X /Y /Z /bracketleft
/backslash /bracketright /asciicircum /underscore
/quoteleft /a /b /c
/d /e /f /g
/h /i /j /k
/l /m /n /o
/p /q /r /s
/t /u /v /w
/x /y /z /braceleft
/bar /braceright /tilde /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
/space /exclamdown /cent /sterling
/currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft
/logicalnot /hyphen /registered /macron
/degree /plusminus /twosuperior /threesuperior
/acute /mu /paragraph /bullet
/cedilla /dotlessi /ordmasculine /guillemotright
/onequarter /onehalf /threequarters /questiondown
/Agrave /Aacute /Acircumflex /Atilde
/Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis
/Igrave /Iacute /Icircumflex /Idieresis
/Eth /Ntilde /Ograve /Oacute
/Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex
/Udieresis /Yacute /Thorn /germandbls
/agrave /aacute /acircumflex /atilde
/adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis
/igrave /iacute /icircumflex /idieresis
/eth /ntilde /ograve /oacute
/ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex
/udieresis /yacute /thorn /ydieresis
] def
/MF { % fontname newfontname -> - make a new encoded font
/newfontname exch def
/fontname exch def
/fontdict fontname findfont def
/newfont fontdict maxlength dict def
fontdict {
exch
dup /FID eq {
% skip FID pair
pop pop
} {
% copy to the new font dictionary
exch newfont 3 1 roll put
} ifelse
} forall
newfont /FontName newfontname put
% insert only valid encoding vectors
encoding_vector length 256 eq {
newfont /Encoding encoding_vector put
} if
newfontname newfont definefont pop
} def
au niveau des définitions (en général après les premiers commentaires
(% ou %%) du fichier, souvent après le
%%EndCommentsou le
%%BeginProlog
Pour changer les appels, il faut trouver tous les findfont (ou équivalents !! Attentions au PostScript qui redéfinisent des macros équivalentes à findfont) que l'on souhaite changer et de les remplacer par
/myfont MF /myfontAttention ! myfont est un nom de variable, si donc il y a plusieurs font à changer il faudra utiliser plusieurs noms différents.
Exemple :
remplacer
/Helvetica findfont 14 scalefont setfontpar
/Helvetica /myfont MF /myfont findfont 14 scalefont setfont
Il y a au moins 4 solutions, pas toutes équivalentes ni aussi jolies.
La première solution, facile mais pas très jolie, consiste à tracer une droite de pente assez forte (tendant vers l'infini) qui passe par votre point. Mais attention ! Pour pouvoir la voir il faut alors que votre pas de dessin soit assez fin, sinon la droite passera "trop vite" entre 2 points de votre dessins.
Prennons un exemple. Vous dessinez sin(x) pour
x entre -1 et 1 et vous voulez dessiner la droite x=0.2.
Cela donne:
plot [-1:1][-1:1] 10000*(x-0.2) t "", sin(x)mais la vous ne voyez rien car le pas de dessin est trop petit par rapport a 10000. Il faut l'augmenter, par exemple
set sample 10000(n'oubliez pas le rep si vous voulez voir le nouveau résultat).
Mais vous voyez que le resultat n'est pas très
joli...
De plus j'attire votre attention sur le fait qu'il faut imposer
l'échelle verticale (le deuxième [-1:1] ci-dessus) car
sinon gnuplot ajuste automatiquement l'échelle et vous
ne verez plus que la droite et plus votre autre graphe (sin(x)
ici.)
LA BONNE SOLUTION à mon avis consiste à ne pas le faire avec plot mais à mettre une arrow sans flèche (option nohead).
Pour reprendre l'exemple précédent, cela donne :
set arrow from 0.2,-1 to 0.2,1 noheadoù -1 et 1 sont les bornes de l'échelle en y.
Pour enlever une arrow : set noarrow X où X est son numéro (que vous pouvez avoir par show arrow si vous avez plusieurs arrows et que vous avez oublié laquelle est laquelle).
Le problème de fond vient du fait que
mathématiquement x=cte n'est pas une
Sur l'exemple précédent, cela donnerait :
set param plot [-1:1][-1:1][-1:1] 0.2,t ti "", t,sin(t) ti "sin(x)"
Notez l'utilisation de l'option title (ti ici) pour donner de "bonnes" légendes au courbes.
Je signale enfin pour les pros de gnuplot (mais en ont-ils besoin ?) cette dernière solution (que je trouve personnellement plus compliquée que arrow) :
plot [-1:1][-1:1] '< echo "0.2 -1"; echo "0.2 1"' t "" w l, sin(x)Notez : les 2 echo pour avoir 2 points (si un de vos bords est l'axe des abscisses, on peut alors faire avec un seul echo et l'option w i (with impulse)), et surtout le t "" (title) pour enlever l'affreux titre affecté à cette droite !