Wednesday 13 August 2008

Οδηγός gnuplot

gnuplot

Το gnuplot είναι ένα πρόγραμμα για τη σχεδίαση δεδομένων και συναρτήσεων από τη γραμμή εντολών. H εγκατάσταση του προγράμματος gnuplot γίνεται με την εκτέλεση της εντολής:

sudo apt-get install gnuplot

όπως πάντα άλλωστε. Το gnuplot ενδείκνυται για να συμπεριληφθεί ως εντολές σχεδίασης σε άλλο πρόγραμμα που διαβάζει ή παράγει τα δεδομένα. Τονίζεται ότι χρησιμοποιείται από το octave (υψηλού επιπέδου γλώσσα για αριθμητικούς υπολογισμούς) και υπάρχει και επέκταση της γλώσσας προγραμματισμού python για gnuplot.

Πληκτρολογώντας gnuplot στη γραμμή εντολών του κελύφους εισέρχεστε στη γραμμή εντολών του gnuplot, ενώ πληκτρολογώντας exit ή quit επιστρέφετε στη γραμμή εντολών του κελύφους.

H εντολή plot

Είναι η βασικότερη ίσως εντολή στο gnuplot, η οποία σχεδιάζει μεγάλη ποικιλία διαγραμμάτων στο επιπέδο (2d). Μπορεί να σχεδιάσει απλές γραμμές, σημεία (dots ή points), συνδυασμό των γραμμών και των σημείων, ιστογράμματα, ράβδους με ένδειξη λάθους, διανύσματα, ράβδους για οικονομικές εφαρμογές κ.α. Τα δεδομένα μπορεί να δημιουργούνται είτε μέσα απο το gnuplot με τη χρήση ενσωματωμένων συναρτήσεων ή που θα διαβάζονται από αρχεία. Οι επιλογές που δέχεται η εντολή plot είναι πάρα πολλές και οι συνδυασμοί τους ακόμη περισσότεροι, γι'αυτό στον οδηγό αυτό θα περιγραφούν μόνο μερικές από τις βασικές.

Συναρτήσεις

Οποιαδήποτε μαθηματική έκφραση που γίνεται αποδεκτή απο C, FORTRAN, Pascal μπορεί να σχεδιαστεί και με το gnuplot. Η προτεραιότητα των τελεστών καθορίζεται από τις προδιαγραφές της γλώσσας C.

Αν πληκτρολογήσουμε

plot x

θα σχεδιάσει μια ευθεία γραμμή που θα ξεκινάει από το σημείο (-10,-10) και θα καταλήγει στο σημείο (10,10) προεπιλεγμένα από το ίδιο το gnuplot. O τύπος της συνάρτησης φάινεται στην επάνω δεξιά γωνία του διαγράμματος. Με την ιδια λογική μπορούμε να σχεδιάσουμε γραφικές παραστάσεις πιο πολύπλοκων συναρτησεων όπως φαίνεται στα παρακάτω παραδείγματα:

plot x**2, x**3-5*x**2
plot sin(x), cos(2*x)
plot 1/tan(x), 1/tan(x+5), 1/tan(x/10)

Όπως φαίνεται κάθε γράφημα τυπώνεται με διαφορετικό χρώμα για να ξεχωρίζεται από τα προηγούμενα. Είναι δυνατό να οριστούν συναρτήσεις από το χρήστη οι οποίες θα χρησιμοποιηθούν αργότερα.

myfun(x) = sin(x) + x
plot myfun(x)

Για να αλλάξει το εύρος που θα σχεδιαστεί η καμπύλη, στο παράδειγμα από 0 μέχρι 5, μπορούμε να πληκτρολογήσουμε

plot [0:5] 1/tan(x)

Αρχεία δεδομένων

Το gnuplot είναι δυνατό να σχεδιάσει και διαγράμματα τα οποία προέρχονται από ένα αρχείο δεδομένων. Υπάρχει βέβαια περιορισμός στη μορφή του αρχείου. Τα δεδομένα πρέπει να είναι διατεταγμένα σε στήλες, όπου κάθε στήλη θα αντιπροσωπεύει τις τιμές ενός άξονα. Ας υποθέσουμε ότι στο αρχείο mydata είναι αποθηκευμένα τα παρακάτω δεδομένα:

0 1.2
1 2.5
2 3.7
3 4.8
4 5.9

Για να σχεδιάσουμε τα δεδομένα αυτά στο gnuplot, θα γράφαμε

plot "mydata"

Τα αρχεία δεδομένων μπορεί να περιλαμβάνουν περισσότερες από μία στήλες, οι οποίες μπορούν να σχεδιαστούν με την επιλογή using ή u.

plot "mydata" using 1:2, u 1:3

στην πρώτη περίπτωση θεωρεί ως δεδομενα την πρώτη και δεύτερη στήλη για τους x- και y- άξονες αντίστοιχα, ενώ στη δεύτερη περίπτωση την πρώτη και τρίτη στήλη του αρχείου.

Μορφοποίηση διαγράμματος

Ένας γενικός τίτλος πάνω από το διάγραμμα ορίζεται ως

set title "Hallo world"

σε αντίθεση με τη λεζάντα που δίνεται από

plot x title "f(x) = x", x**2 title "f(x) = x**2"

Oι ετικέτες των αξόνων ορίζονται με τις επιλογές

set xlabel "x"
set ylabel "f(x)"

και το διάγραμμα τότε μπορεί να ξανασχεδιαστεί με

replot

Αυτοματοποίηση εντολών

Όλες οι εντολές που θα χρησιμοποιηθούν μπορούν να αποθηκευτούν σε ένα αρχείο για μελλοντική χρήση και να καλούνται από το gnuplot με την εντολή load. Για παράδειγμα το αρχείο myfile μπορεί να περιλαμβάνει τις εξής εντολές:

set title "Hallo world"
set xlabel "Time"
set ylabel "Money"
plot x title "Time is money"

και να καλεσθεί μέσα από το gnuplot ως:

load "myfile"

όπου θα εκτελεσθούν οι παραπάνω εντολές.

Επίλογος

Οι δυνατότητες φυσικά του gnuplot δε περιορίζονται σε αυτά τα οποία περιγράφτηκαν εδώ. Για περισσότερες πληροφορίες μπορεί κανείς να ψάξει στην ιστοσελίδα του gnuplot, ή μέσα από το πρόγραμμα πληκτρολογώντας

help {<θέμα>}

Βιβλιογραφία

http://www.gnuplot.info/docs/gnuplot.html

No comments: