البرنامج النصي gnuplot ، للحلقة داخل أو إضافة إلى المؤامرة الحالية
-
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;
يرسم الاستبدال الأسهم.
إذا كنت تريد "فقط" الخطوط ولا شيء غير ذلك - فستحتاج إلى إطعام رسم بياني للتخطيط فعليًا (مجموعة من الأسهم لا تحسب). يمكن بعد ذلك استخدام المثال الذي قدمته لرسم الخط الرأسي الأول.
أتمنى أن يساعدك هذا.
توم