Réalisation d'une fonction
A partir du script de la page précédente, réalisons un script prenant en entrée un dossier contenant un ou plusieurs fichiers de données ASCII et affichant une courbe par fichier. Pour cela, nous allons définir une fonction AfficherUneCourbe qui traite un fichier et appeler cette fonction dans une boucle :
|
on AfficherUneCourbe(f, v) --f est le fichier, v est la vue contenant les courbes
set {x, y} to extractcolumn {1, 2} in f skipping 1 as array of real
set c to QuickCurve(x, y, v)
set pattern style of c to 8
set pen width of c to 2
set theName to name of (info for f) --récupération du nom du fichier
set name of c to theName
return container of c --notre fonction renvoie une référence au conteneur de la courbe créée
end AfficherUneCourbe
set f to (navchoose folder without multiple files) as alias --demande à choisir un dossier.
set flist to list files f
set v to 0 --en passant 0 à QuickCurve on lui indique de créer un nouvelle fenêtre
repeat with i from 1 to (count flist)
set f to item i of flist
if (f as string) ends with ".txt" then
set v to AfficherUneCourbe((get item i of flist), v)
end if
end repeat
if v is 0 then
FatalAlert("Aucun fichier trouvé")
return
end
set legend kind of v to 2 --légende dans un cadre
set xlabel of v to "x axis" --commentaire de l'axe des x
set ylabel of v to "y axis" --commentaire de l'axe des y
set label text font of v to "Helvetica"
set label text size of v to 14
set name of v to "Exemple de personnalisation"
set w to window of v
set margins of w to {0, 0} --pas d'ascenseur sur les bords de la fenêtre
set message bar of w to "Cliquez sur la courbe pour obtenir les coordonnées"
draw w --rafraîchit l'affichage
Importer le script
|
|
Vous avez réalisé votre premier automate de traitement et de visualisation de données avec Smile. Cet automate permet d'afficher un nombre quelconque de courbes à partir de données contenues dans des fichiers ASCII tabulés.
Variante
Vous pourriez modifier votre fonction AfficherUneCourbe pour que la forme des points de chaque courbe soit des croix si sa valeur minimale est inférieure à 0, et des ronds sinon, en utilisant la commande statlist :
on AfficherUneCourbe(f, v) --f est le fichier, v est la vue contenant les courbes
try
set {x, y} to extractcolumn {1, 2} in f skipping 1 as array of real
set c to QuickCurve(x, y, v)
set stl to statlist y
if (get minimum of stl) < 0 then
set pattern style of c to 6
else
set pattern style of c to 1
end if
set line style of c to 0
set pen width of c to 2
set theName to name of (info for f) --récupération du nom du fichier
set name of c to theName
return container of c --notre fonction renvoie une référence au conteneur de la courbe créée
on error
return v
end try
end AfficherUneCourbe
Modifiez votre fonction, sélectionnez l'ensemble du texte la définissant, et appuyez sur ⌘R pour recompiler la fonction. Lorsque vous exécutez la portion de script faisant appel à la fonction, vous obtenez un graphique de ce type :
|