scénario gnuplot, boucle à l'intérieur ou à l'ajout tracé existant

StackOverflow https://stackoverflow.com/questions/4062999

  •  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.

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top