scénario gnuplot, boucle à l'intérieur ou à l'ajout tracé existant
-
27-09-2019 - |
Question
Je voudrais tracer une série de lignes verticales dans gnuplot à un intervalle défini.
Quelques informations sur le terrain.
L'intrigue est principalement des données d'un fichier .dat. Le script gnuplot est appelé par un script bash qui modifie le script de tracé gnu avec sed. Ceci est un snipit du vieux script bash (laid, je suis sûr).
sed -i 's/C = CONCEHOLD/C = '${$CO}'/g' $GNUPLOTROOT/plotviscosity.plt
gnuplot $GNUPLOTROOT/plotviscosity.plt
mv my-plot.ps $VISCPLOTNAME
sed -i 's/C = '${$CO}'/C = CONCEHOLD/g' $GNUPLOTROOT/plotviscosity.plt
avec le. fichier plt qui ressemble à ceci.
set title "Viscosity vs Time, C = CONCEHOLD, beta = RATHOLD, zeta = ZETAHOLD"
set xlabel "Time"
set ylabel "Viscosity"
plot "viscout.dat" using 3:2 title 'Viscosity'
# Saving to my-plot.ps
load save.plt
#
Je voudrais ajouter à cette parcelle une série de lignes verticales à un ensemble intervalle de répétition. J'ai trouvé comment tracer des lignes verticales via http://t16web.lanl.gov/Kawano/gnuplot/parametric-e.html
set parametric
const=3
set trange [1:4]
set xrange [0:5]
set yrange [0:5]
plot const,t
Je voudrais avoir
const=repititionperiod*i
où i est un entier appartenant à (1, calculateduppedlimit].
Je pourrais repititionperiod entrée via sed à nouveau et dans un calculateduppedlimit vain similaire, mais besoin d'une sorte de boucle soit dans gnuplot ou un script gnuplot distinct qui ajoute une ligne verticale à l'intrigue déjà créé dans une boucle dans mon script bash.
Je ne peux pas trouver des informations sur les boucles dans parcelle gnu ou en ajoutant à un terrain précédemment créé.
Un conseil reçu avec gratitude.
La solution
EDIT: Gnuplot fait maintenant en fait maintenant un support pour la boucle, vous pouvez lire à ce sujet ici
Comme je comprends gnuplot ne dispose pas d'une boucle, mais vous pouvez générer une sorte comme suit:
Faire un fichier "loop.gp" contenant
const = const + 1
#... some gnuplot commands ...
if(const<100) reread
puis dans un terminal gnuplot ou écriture de script,
const = 3; load "loop.gp";
Cela vous donnera une simple boucle.
(cet exemple est tiré de la section misc. De http://t16web.lanl.gov/Kawano/gnuplot/index-e.html )
Pour votre réponse particulière que vous pourriez essayer d'ajouter des flèches plutôt que des lignes paremetric, par exemple.
set arrow from const,1 to const,4 nohead
fera la même chose.
Dans ce cas, vous pourriez être loop.gp
const = const + repititionperiod
#... some gnuplot commands ...
set arrow from const,1 to const,4 nohead
if(const<calculatedupperlimit) reread
et que vous souhaitez vous lancer en boucle avec
const = 1; repititionperiod=2;calculatedupperlimit = 10; load "loop.gp"; replot;
Les parcelles Replot les flèches.
Si vous « juste » voulez les lignes et rien d'autre - alors vous aurez besoin pour alimenter un graphique pour réellement parcelle (un ensemble de flèches ne compte pas). L'exemple que vous avez donné pourrait alors être utilisé pour tracer la première ligne verticale.
espérons que cette aide.
Tom