Posez votre question Signaler

Script Shell pour tracé avec Gnuplot [Résolu]

nonoEW 28Messages postés 2 août 2008Date d'inscription 18 avril 2011Dernière intervention - Dernière réponse le 14 déc. 2009 à 20:23
Bonjour,
J'ai des fichiers de données type dataYY_MM_DD.log à 4 colonnes à partir desquels je dois tracer des courbes.
Pour le moment j'utilise Gnuplot où je tape les commandes directement mais j'aimerais automatiser la chose avec un fichier .sh qui me permettrait de :
1- Créer un fichier postscript sur le disque type dataYY_MM_DD.ps pour l'affichage des courbes,
2- Lance Gnuplot,
3- Sélectionne le terminal ("set terminal postscript"),
3- Sélectionne le fichier crée sur le disque (set output "dataYY_MM_DD.ps"),
4- Sélectionne format abscisse et ordonnée... (set format y "$%g$" / set format x "$%.2f$"),
5- Sélectionne le titre du graphe set title (set title "Plateau Curve"),
6- Sélectionne le libellé abscisse/ordonnée (set xlabel "HV" / set ylabel "Flux"),
7- Enfin trace le fichier voulu (plot "data.log" using 2:3 with lines).
Etant novice en shell, est ce que quelqu'un pourrait me guider ?
Merci
Nono
Lire la suite 

Script Shell pour tracé avec Gnuplot »

36 réponses
Réponse
+2
moins plus
Surement...

En reprenant l'exemple ci-dessus :
#! /bin/sh

DATE=$(date '+%d-%m-%Y')

gnuplot <<EOF
set logscale y
set xlabel 'Valeur de x'
set ylabel 'Grandeur à calculer'
set yrange [1:10000]
set grid
set nokey
set label "Reference" at 20,1000
set label "Mesures" at 20,100
plot x**2, x**2+12*x*sin(sqrt(x))

pause -1

set term postscript portrait
set output "${DATE}.ps"
set size 0.7, 0.7
replot
EOF
devrait le faire.
Ajouter un commentaire
Réponse
+1
moins plus
Salut,

Normalement en mettant toutes ces commandes dans un simple fichier texte que tu appelleras comme suit :
gnuplot fichier.txt


;-))
Ajouter un commentaire
Réponse
+1
moins plus
Merci JP pour cette réponse mais il m'est imposé de mettre cela dans un script shell. De plus la création du fichier .ps n'est assurée en faisant comme cela.

Nono
jipicy- 3 août 2008 à 15:35
Si si c'est faisable.

Regarde sur cette page : http://www-rst.int-evry.fr/~hebutern/IT21/Simu/Gnuplot.html

En prenant toutes les commandes données dans la partie intitulée "Exemple" et en les mettant dans un fichier, tu crées ensuite un script sh depuis lequel tu appelleras ton fichier de commande via la commande "gnuplot".
#! /bin/sh

gnuplot fichier.commande
Ton fichier .ps sera créé et le graphe s'affichera...
Ajouter un commentaire
Réponse
+1
moins plus
Merci, j'ai essayé, cela marche très bien mais au risque d'être chiant ,)
J'aimerais tout de même savoir si il est possible de faire cela avec un seul et même fichier shell qui me créer un fichier .ps à chaque fois que je l'éxécute avec date+heure comme nom de fichier .ps.
Nono
Ajouter un commentaire
Réponse
+1
moins plus
ok, merci, c'est nickel tout ça !!!
j'ai une dernière question...
Voilà le code pour mon tracé :

#! /bin/sh

DATE=$(date '+%d-%m-%Y-%H:%M:%S')

gnuplot <<EOF
set term postscript landscape
set output 'SPND_SU_PS_${DATE}.ps'

set xlabel 'Time'
set ylabel 'Flux'
set grid
set nokey
set title 'Response'
plot "data.log" using 1:2 with lines
EOF

Est-il possible de faire en sorte d'utiliser systématiquement le dernier fichier de points (.log) enregistré sur le disque pour le tracé ?? Et éventuellement mettre un message si aucun fichier .log n'est présent sur le disque ?

Nono
Ajouter un commentaire
Réponse
+1
moins plus
Re-

Oui c'est possible.

Mais faut-il encore savoir comment différencier le dernier fichier de log ? Date ? Nom ?
Ajouter un commentaire
Réponse
+1
moins plus
Le fichier de log devrait toujours être différencié par la date et son nom devrait avoir la forme suivante :
data_${DATE}.log

Nono
Ajouter un commentaire
Réponse
+1
moins plus
T'as pas un exemple de listing du répertoire contenant les fichiers (ls -l), histoire de voir sur quoi se baser pour la récup du dernier enregistrement...
nonoEW- 6 août 2008 à 11:40
Ah, non boulette... C'était ça l'erreur. Maintenant ça marche bien. Mille Merci !
Mais pourquoi doit on le mettre en début de ligne comme cela ?

Nono
jipicy- 6 août 2008 à 11:44
Ça faudra demander au(x) développeur(s) qui a (ont) conçu le code ;-))
nonoEW- 6 août 2008 à 14:31
Arf, ben c'est bon a savoir en tout cas tout ça
Merci bcp jipicy
Ajouter un commentaire
Réponse
+1
moins plus
Malheureseument non, je n'ai pas de listing à dispo, je pourrais t'en faire un à la mano mais le matos dont j'ai besoin n'est pas. Je travaille un peu en aveugle en fait...
Nono
jingmeijipicy - 7 déc. 2009 à 21:43
ça march!
avec
u (\$1/3600):2
merci bcp!!!!
jipicy- 7 déc. 2009 à 21:55
Ben merci à toi surtout ;-))
jingmeijingmei - 14 déc. 2009 à 20:23
bonjour,
je voudrais appeler une fonction de shell dans gnuplot.
par exemple:
>gnuplot plot 'res.data' u 3:(f($1)) w lp
j'ai définit un fonction "zjjyy" enfonction de $1 dans shell:
function zjjyy
{ for (( i=1; i<=15; i++ ))
do
if [ $i -le 7 ]
then
zjjyy=2
else
zjjyy=300
fi
echo $zjjyy
done
}
zjjyy

Je ne peux pas faire :
>gnuplot plot 'res.data' u 3:(zjjyy($1)) w lp

merci en avance
jingmei
Ajouter un commentaire
Réponse
-1
moins plus
Euh... quelques infos supplémentaires ne seraient pas de trop.

Ils arrivent comment ces fichiers dans le répertoire ? A quelle fréquence ? Quotidienne ? hebdo ? Il y en a combien en général ensemble ? etc.
Ajouter un commentaire
Réponse
-1
moins plus
Ben en fait c'est des résultats de tests périodiques. Les fichiers sont crées après appui sur un bouton d'une appli
Je pense que la périodicité du truc devrait être de 1 fichier toute les semaines un peu près à terme (ce n'est pas définis, j'y travaille). Mais pour être sûr disont qu'il est possible d'avoir un enregistrement toutes les 10 minutes pas moins.

Nono
Ajouter un commentaire
Ce document intitulé « Script Shell pour tracé avec Gnuplot » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?