Εισαγωγή στο Gnuplot Σφυράκης Χρυσοβαλάντης
Περιεχόμενα Εισαγωγή... 3 Εντολές του Gnuplot... 3 Έξοδος του γραφήματος... 3 Καθορισμός των χαρακτηριστικών του γραφήματος... 4 Συναρτήσεις Αρχεία Δεδομένων... 5 Καθορισμός του Στυλ... 7 Παραδείγματα... 8 Προκαθορισμένες συναρτήσεις του gnuplot... 12
Εισαγωγή Το gnuplot είναι ένα πακέτο για την δημιουργία γραφικών. Έχει τη δυνατότητα να αναπαριστάνει διδιάστατες αλλά και τριδιάστατες γραφικές παραστάσεις. Το gnuplot είναι μέσα στα στάνταρ πακέτα του Unix, όμως τα τελευταία χρόνια έχει δημιουργηθεί και μια έκδοσή του για τα Windows- Dos. Στο Unix το τρέχουμε μέσα από xterm (συνήθως) γράφοντας gnuplot, οπότε μας εμφανίζει στη γραμμή εντολών του: gnuplot> Αντίστοιχα και για Windows 95 ή ΝΤ, πατώντας πάνω στο εικονίδιο Αυτό που θα δούμε είναι Εντολές του Gnuplot Μια από τις σημαντικότερες εντολές στο gnuplot είναι η help. Αυτή μας βοηθάει να βρίσκουμε πληροφορίες για άλλες εντολές. Έξοδος του γραφήματος (χρειάζεται περισσότερο σε αυτούς που χρησιμοποιούν Unix) set term regis: για vt graphics τερματικό (vt125,vt240,vt330, ) set term dumb: για κοινό τερματικό (vt320,vt420, ) (όχι καλό αποτέλεσμα) Ακόμα όταν θέλουμε να βγάλουμε σε postscript (αυτό ισχύει και στα Windows 95) δηλαδή να αποθηκεύσουμε τη δουλεία μας σε.ps, (αυτό βοηθάει και στην εκτύπωση) χρησιμοποιούμε την παρακάτω σειρά εντολών:
set term postscript set output onoma.ps..εντολές σχεδίασης. Επίσης έχουμε τη δυνατότητα να αποθηκεύσουμε σε Latex με τις εντολές: set term latex set output onoma.tex..εντολές σχεδίασης. Καθορισμός των χαρακτηριστικών του γραφήματος Σε ένα γράφημα μπορείτε να καθορίσετε ορισμένα χαρακτηριστικά όπως ονόματα αξόνων (labels), όρια τιμών μεταβλητών (x, y, z range), υποδιαιρέσεις (tickmarks) κ.α. Τα παραπάνω στοιχεία καθορίζονται μεσώ της εντολής set. Αν δεν το έχετε καθορίσει, τότε το πρόγραμμα τα καθορίζει μόνο του μέσω κάποιων default (προκαθορισμένων) τιμών. set autoscale : Το πρόγραμμα επιλέγει μόνο του τα όρια χρησιμοποιώντας default τιμές. Η εντολή αυτή αναιρείται με την εντολή : set noautoscale. set xrange [a:b] : καθορίζει τα όρια (range) του x - άξονα (a,b: πάνω και κάτω όριο αντίστοιχα) set yrange [a:b] : καθορίζει τα όρια (range) του y - άξονα (a,b: πάνω και κάτω όριο αντίστοιχα) set zrange [a:b] : καθορίζει τα όρια (range) του z - άξονα (a,b: πάνω και κάτω όριο αντίστοιχα) set xtics : με τον όρο tics ονομάζουμε τις υποδιαιρέσεις του κάθε άξονα και τους αριθμούς που μπαίνουν κάτω από την κάθε υποδιαίρεση. Σύνταξη set xtics [a,h,b] καθορίζει τα όρια και το βήμα στον x - άξονα (a,b πάνω και κάτω όριο αντίστοιχα και h το βήμα). Αντίστοιχα set ytics [a,h,b], set ztics [a,h,b]. Ακόμα set xtics ('a' 0, 'b' 10, ' ' 20) σημαίνει να μπουν συνολικά 3 υποδιαιρέσεις, στα σημεία 0, 10 κα 20, με το χαρακτήρα a κάτω από το 0, το χαρακτήρα b κάτω από το 10 και τίποτα κάτω από το 20. set xlabel x-onoma : τοποθετεί όνομα (label) στον x-άξονα (όμοια y,z). set title titlos : δίνει ένα γενικό τίτλο στο γράφημα. Άλλες εντολές set που συναντάμε είναι: set label π.χ. set label 1 onoma at 1,3 right
set nolabel 1 set (no)xzeroaxis set (no)zeroaxis set (no)grid set (no)key set size set (no)logscale Η εντολή plot-splot Η εντολή plot παράγει το γράφημα. Η σύνταξη της εντολής είναι: plot {όρια} {<συναρτηση1>} ή {"<αρχειο1>" {αρχειο2...} {τίτλος} {στυλ} τα όρια τα θέτουμε με [μτβ1=a1:b1] για όσες μεταβλητές έχουμε (το πολύ 2). Αν θέλουμε να καθορίσουμε και στον άλλο άξονα τις διαστάσεις (στον y για διδιάστατα και στον z για τριδιάστατα) γράφουμε [a:b] Παραδείγματα plot [x=0:2] [-3:1] x**2*sin(x)-3 splot [x=0:2] [y=-3:1] [-1:1] x**2*sin(x)-3*y Συναρτήσεις Αρχεία Δεδομένων Ήδη έχουμε δει πως γράφουμε συναρτήσεις δυο και τριών μεταβλητών, π.χ. x**2*sin(x)-3 και η x**2*sin(x)-3*y. Γι αυτό θα εστιάσουμε την προσοχή μας στην δημιουργία γραφημάτων από αρχεία τιμών. Για διδιάστατα γραφικά το αρχείο θα πρέπει να έχει δυο στήλες η μια του x και η άλλη του f(x). Αντίστοιχα, για τριδιάστατα, μια του x, μια του y και μια με την f(x,y). Παρακάτω δίνουμε ένα πρόγραμμα κατασκευής ενός αρχείου data2d.dat που έχει δυο στήλες η μια του x και η άλλη του f(x). Το πρόγραμμα είναι γραμμένο και σε Fortran και σε C. Π.χ Το αρχείο data2d.dat προέρχεται από το παρακάτω πρόγραμμα Fortran
PROGRAM synartiseis G(x)=x**2+3*x+1 REAL x,h,tmp INTEGER I h= 2./100. OPEN(1, data2d.dat ) DO 10, i=0,100 x=h*i tmp=f(x)*g(x) WRITE(1,12) x,, tmp 10 CONTINUE CLOSE(1) 12 FORMAT(F8.3,A,F8.3) END REAL FUNCTION F(x) IF((0.LE.x).AND.(x.LE.1)) THEN F(x)=x*COS(x) ELSE IF((1.LT.x).AND.(x.LE.2)) THEN F(x)=x*SIN(x) RETURN END Π.χ Το αρχείο data2d.dat προέρχεται από το παρακάτω πρόγραμμα C #include <stdio.h> #include <math.h> float G(float); float F(float); main() { float x, h; int i; FILE *fp;
if ((fp = fopen("data2d.dat", "w")) == NULL) exit(1); } h = 2.0/100.0; for (i=0; i<=100; i++) { x = h*i; fprintf(fp, "%8.3f %8.3f\n", x, F(x)*G(x)); } fclose(fp); float G(float x) { return x*x + 3*x + 1; } float F(float x) { if (x >= 0 && x <= 1) return x * cos(x); else if (x>=1 && x<=2) return x*sin(x); } Το γράφημα γίνεται με την εντολή plot data2d.dat Αντίστοιχα θα μπορούσαμε να καθορίσουμε όρια και να βάλουμε και περισσότερα από ένα αρχεία. (Εδώ δεν είναι απαραίτητο να βάζουμε και το όνομα της μεταβλητής όταν καθορίζουμε τα όρια). Όμοια και για αρχεία με τρεις στήλες, με την splot θα έχουμε το γράφημα τους. Καθορισμός του Στυλ Στο gnuplot μπορούμε να δίνουμε τίτλο σε κάθε μια συνάρτηση π.χ. plot x title test, x**2 title x^2 ή για συντομία plot x t test, x**2 t x^2 Στη συνέχεια θα ασχοληθούμε με την παράμετρο with της plot (splot)
with line n: με n=1,2 καθορίζουμε το χρώμα που θα έχει η γραμμή μας with dots: το γράφημα γίνεται με τελείες συνεχείς. with points: με διακριτά σημεία. with lines : ενώνει τα σημεία με γραμμές with linespoints ενώνει τα σημεία με γραμμές και τονίζει τα σημεία. Ακόμα μπορούμε να έχουμε impulses, errorbars, steps, boxes ή boxerrorbars Παραδείγματα plot x**2 t x^2 with dots plot data2d.dat with linespoints plot [-1:1] [-2:2] x with boxes Replot Συχνά έχουμε ήδη κάτι σχεδιάσει σε ένα γράφημα και θέλουμε να προσθέσουμε και κάτι άλλο. Τότε χρησιμοποιούμε την replot. Η replot έχει αντίστοιχες παραμέτρους με την plot εκτός από τα όρια που τα παίρνει από την plot. Παραδείγματα plot [0:2*pi] sin(x) replot cos(x) set term postscript set output graf.ps set xrange [0:10] set yrange [-1:1] set xlabel x-axis set ylabel y-axis set title EXAMPLE set xtics ( 0,0, pi,pi, 2pi,2*pi) set label 1 cosine at 5,0.6 right set label 2 sine at 5,0.6 right c=-0.5 plot cos(x) with dots, sin(x) with lines 1, tan(x),c*x
Το αποτέλεσμα έχει σωθεί στο postscript αρχείο graf.ps και μπορείτε να το τυπώσετε ή να το δείτε με το Ghostview. set xrange [-3:3] set yrange [-3:3] set xlabel x-axis set ylabel y-axis set zlabel z-axis set title EXAMPLE splot [x=-3:3] [y=-3:3] (sin(x**2+y**2)) /(x**2+y**2) splot [x=-3:3] [y=-3:3] (sin(x**2+y**2)) /(x**2+y**2) with linespoints splot [0:3] [0:3] (sin(x*y))/(x**2+y**2) splot [-3:3] [-3:3] (x**2+3*y**2)*exp(1-x**2-y**2)
Προκαθορισμένες συναρτήσεις του gnuplot