البرنامج النصي gnuplot ، للحلقة داخل أو إضافة إلى المؤامرة الحالية

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

  •  27-09-2019
  •  | 
  •  

سؤال

أرغب في رسم سلسلة من الخطوط الرأسية في Gnuplot في فاصل محدد.

بعض المعلومات حول المؤامرة.

المؤامرة هي أساسا بعض البيانات من ملف .DAT. يتم استدعاء البرنامج النصي GNUPLOT بواسطة برامج نصية باش التي تغير البرنامج النصي GNU مؤامرة باستخدام SED. هذا هو قناص من نص باش القديم (قبيح أنا متأكد).

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

مع ال . ملف PLT يبدو هكذا.

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
#

أود أن أضيف إلى هذه المؤامرة سلسلة من الخطوط الرأسية في فاصل تكرار مجموعة. لقد وجدت كيفية رسم الخطوط الرأسية عبر 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

أود أن أحصل على

const=repititionperiod*i

حيث أنا عدد صحيح ينتمي إلى (1 ، محسوبة appedlimit].

يمكنني إدخال RipititionPeriod عبر SED مرة أخرى وفي عبث مماثل محسوب محسوب ولكن بحاجة إلى نوع من الحلقة إما داخل gnuplot أو البرنامج النصي المنفصل gnuplot يضيف خطًا عموديًا إلى المؤامرة التي تم إنشاؤها بالفعل داخل حلقة في برنامج Bash الخاص بي.

لا يمكنني العثور على أي معلومات عن الحلقات داخل مؤامرة GNU أو إضافة إلى مؤامرة تم إنشاؤها مسبقًا.

أي نصيحة تلقيها بامتنان.

هل كانت مفيدة؟

المحلول

تعديل: Gnuplot الآن في الواقع يدعم الآن حلقة ، يمكنك أن تقرأ عنها هنا

كما أفهم ، لا يحتوي gnuplot على حلقة ، على الرغم من أنه يمكنك إنشاء أحد الأنواع على النحو التالي:

قم بعمل ملف "loop.gp" يحتوي

const  = const + 1
#... some gnuplot commands ... 
if(const<100) reread

ثم في محطة gnuplot ، أو كتابة البرنامج النصي ،

const = 3; load "loop.gp";

هذا سوف يعطيك حلقة بسيطة.

(هذا المثال مأخوذ من قسم Misc. http://t16web.lanl.gov/kawano/gnuplot/index-e.html)

لإجابتك الخاصة ، قد تحاول إضافة الأسهم بدلاً من الخطوط البارمية ، على سبيل المثال.

set arrow from const,1 to const,4 nohead

سوف تفعل الكثير نفس الشيء.

في هذه الحالة ، يمكن أن تكون loop.gp

const  = const + repititionperiod
#... some gnuplot commands ...  
set arrow from const,1 to const,4 nohead
if(const<calculatedupperlimit) reread

وستقوم بتشغيل حلقة مع

const = 1; repititionperiod=2;calculatedupperlimit = 10; load "loop.gp"; replot;

يرسم الاستبدال الأسهم.

إذا كنت تريد "فقط" الخطوط ولا شيء غير ذلك - فستحتاج إلى إطعام رسم بياني للتخطيط فعليًا (مجموعة من الأسهم لا تحسب). يمكن بعد ذلك استخدام المثال الذي قدمته لرسم الخط الرأسي الأول.

أتمنى أن يساعدك هذا.

توم

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top