Gnuplot, xfig: Κατασκευή γραφημάτων, σχηματων και
επεξεργασία εικόνας.
Στοχος του εργαστηριου ειναι να εξοικειωθητε με τη βασικη χρηση
του gnuplot και του xfig και να μαθετε να κατασκευαζετε απλες γραφικες
παραστασεις και σχηματα.
Προετοιμασια
Απο τη σελιδα της 9ης διαλεξης επισκευθειτε τους ακολουθους συνδεσμους:
Επισκευθειτε τον συνδεσμο του gnuplot με τα παραδειγματα
κατασκευης γραφικων παραστασεων. Μελετηστε τις εντολες που τα
κατασκευαζουν και αναζητηστε τις εννοιες που δεν καταλαβαινετε στο
αναλυτικο εγχειριδιο.
Επισκευθειτε τον συνδεσμο του εγχειριδιου του xfig και μαθετε
τις βασικες λειτουργιες του λογισμικου.
Θα χρειαστητε τα παρακατω αρχεια. Κατεβαστε τα και σωστε τα με το
ονομα που δινεται σε εναν υποκαταλογο της αρεσκειας σας μεσα στον
οποιο θα δουλεψετε:
Στη γραφικη παρασταση μπορειτε να προσθεσετε τιτλο, καθως και να
βαλετε ετικετες στους αξονες:
set title
"Trigonometria" replot set xlabel "x" replot set ylabel "y" replot
Μπορειτε να αλλαξετε τα ορια στους αξονες βαζοντας τα σε αγκυλες
στην εντολη plot:
plot [-5:5]
x*sin(x),x*cos(x) plot [-5:5][0:4]
x*sin(x),x*cos(x) plot [:][0:10]
x*sin(x),x*cos(x) plot [:][:0] x*sin(x),x*cos(x)
Καθοριστε την ονομασια καθε καμπυλης:
plot x*sin(x) title "Hmitono"
,x*cos(x) title "Synimitono"
Καθαριστε τον τιτλο της γραφικης παραστασης και τους αξονες:
set title set xlabel set ylabel replot
Απο τη γραμμη εντολων του gnuplot, μπορειτε να ανακαλεσετε
παλιες εντολες με τα ανω/κατω βελακια. Μετακινωντας τον cursor με τα
δεξια/αριστερα βελακια μπορειτε να κανετε ευκολα αλλαγες σε
προηγουμενη εντολη. Ανακαλεστε με τα βελακια την σχετικη εντολη και
διορθωστε την ωστε να εκτελεσετε:
plot (x**2)*sin(x) title "Hmitono"
,(x**2)*cos(x) title "Synimitono"
Μπορειτε να ορισετε συναρτησεις με δικα σας ονοματα:
f(x)=x*exp(-x/5)*sin(x) g(x)=x*exp(-x/4)*sin(2*x) plot [0:40] x*f(x) plot [0:40] f(x),g(x) plot [0:40] x*cos(x)*f(x)
Στην τελευταια γραφικη παρασταση, παρατηρουμε γωνιες που δεν
φαινονται να ειναι η πραγματικη συμπεριφορα της συναρτησης. Οντως, το
προγραμμα για να κανει τη γραφικη παρασταση επιλεγει 100 σημεια και
τα ενωνει με ευθειες γραμμες. Αυτο ελεγχεται απο την παραμετρο
samples:
set samples 2000 replot set samples 20 replot set samples 100 replot
Αυτο φαινεται καλυτερα αν η γραφικη παρασταση γινει με σημεια:
plot [0:40] x*cos(x)*f(x) with
points set samples 20 replot set samples 2000 replot set samples 100 replot
Μπορειτε να κανετε την γραφικη παρασταση με διαφορετικα στυλ!
plot [0:40] x*cos(x)*f(x) with
boxes plot [0:40] x*cos(x)*f(x) with
histeps plot [0:40] x*cos(x)*f(x) with
steps,f(x) w linespoints plot [0:40] x*cos(x)*f(x) with
fsteps plot [0:40] x*cos(x)*f(x) with
steps plot [0:40] x*cos(x)*f(x) with
dots
Δειτε τα χαρακτηριστικα σημεια μιας συναρτησης με πιο πολυ
λεπτομερεια:
set grid replot set nogrid replot
Δεν σας αρεσει η θεση των τιτλων; Αλλαξτε την...
plot [0:40] x*cos(x)*f(x) with
steps,f(x) w linespoints set key bottom left
Left replot set key bottom right Right replot set key replot
Μπορουμε να βαλουμε στην γραφικη παρασταση κειμενο σε οποιο
σημειο θελουμε:
set label "My label" at
30,4 replot
και να δειξουμε οπου θελουμε:
set arrow from 30,4 to
14,6.3 replot set nolabel set noarrow replot
Πολλες φορες σε μια γραφικη παρασταση παρουσιαζονται μεγαλες
διαφορες στην αριθμητικη κλιμακα των τιμων μιας συναρτησης ή και του
πεδιου ορισμου της. Στην περιπτωση αυτη θελουμε να κανουμε
λογαριθμικη γραφικη παρασταση σε εναν ή και στους δυο αξονες.
plot exp(-x) set log y replot set nolog replot
Παρατηρηστε πως ο ενας αξονας μπηκε σε λογαριθμικη κλιμακα. Η γραφικη
παρασταση εγινε ευθεια. Γιατι; Προσπαθηστε τωρα:
plot [0:] x**(10) set log plot [0.01:] x**(10) set nolog replot
Παρατηρηστε πως και οι δυο αξονες μπηκαν σε λογαριθμικη κλιμακα. Η
γραφικη παρασταση εγινε ευθεια και το κατω οριο στο x το βαλαμε
μεγαλυτερο του 0. Γιατι;
Με το gnuplot μπορουμε να κανουμε γραφικες παραστασεις
παραμετρικων συναρτησεων. Η ανεξαρτητη μεταβλητη στην περιπτωση αυτη
ειναι η t ενω πρεπει να δωσουμε δυο συναρτησεις του t που να μας
δινουν τις x,y συνιστωσες του διανυσματος θεσης.
set parametric plot sin(t),t*cos(t) plot [-pi:pi]
sin(t),t*cos(t) plot [-2*pi:2*pi]
sin(t),t*cos(t) plot [-10*pi:10*pi]
sin(t),t*cos(t) set samples 20000 replot set samples 100 set noparametric
Με το gnuplot μπορουμε να κανουμε και γραφικη παρασταση
συναρτησης 2 μεταβλητων στον χωρο των τριων διαστασεων.
splot
[-2:2][-2:2]1/(1+x**2+y**2) splot
[-2:2][-2:2]1/(1+x**2+y**2),exp(-x**2-y**2) set hidden3d replot set isosamples 25,25 replot splot [-2:2][-2:2] sin(x*y) splot [-2:2][-2:2]
sin(x*y),cos(x*y)
Με το gnuplot μπορουμε ευκολα να παραστησουμε γραφικα δεδομενα
που βρισκονται σε ενα αρχειο. Οι συντεταγμενες των σημειων της
γραφικης παραστασης ειναι
τοποθετημενες σε στηλες. Μια για τον αξονα των x και μια για τον αξονα
των y. Αν δεν καθορισουμε εμεις ποια στηλη ειναι για καθε αξονα, το
προγραμμα διαλεγει την πρωτη και δευτερη στηλη αντιστοιχα. Εξεταστε
τα αρχεια data και data1. Καθε γραμμη που αρχιζει απο # αγνοηται απο το gnuplot και εκει μπορουμε να
γραψουμε σχολια. Στο αρχειο data1, η πρωτη στηλη ειναι η ανεξαρτητη μεταβλητη
και η δευτερη η εξαρτημενη. Εμεις ομως με την εντολη using μπορουμε να διαλεξουμε οποια θελουμε:
plot "data1" plot "data1" using
2:1 plot "data1" using
1:2 plot "data1" with lines plot "data1" with linespoints plot "data1" with steps plot "data1" with impulses
Οταν τα δεδομενα μας προερχονται απο πειραματικες ή στατιστικες
μετρησεις, περιεχουν σφαλματα. Κοιταξτε παλι το αρχειο data1. Η τριτη στηλη ειναι το σφαλμα στην μετρηση
του x και η τεταρτη το σφαλμα στη μετρηση του y:
plot "data1" using 1:2:3 with
errorbars plot "data1" using 1:2:3:4 with
xyerrorbars
Μπορουμε να συνδυασουμε τη γραφικη παρασταση περισσοτερων
ποσοτητων. Εξεταστε τωρα το αρχειο data με
την εντολη (στη γραμμη εντολων!!)
less -S
data
Στην πρωτη στηλη εχουμε την ανεξαρτητη μεταβλητη και μετα ανα
ζευγαρια στηλων ποσοτητες που εχουμε μετρησει με τα σφαλματα τους
(χρησιμοποιηστε το δεξι βελακι για να δειτε το αρχειο ως το τελος της
γραμμης).
plot "data" using 1:2:3 with
errorbars plot "data" using 1:2:3 with
errorbars,"data" using 1:4:5 with errorbars plot "data" using 1:2:3 with
errorbars,"data" using 1:4:5 with errorbars, "data" using 1:6:7 with
errorbars
Οταν δινουμε τις εντολες για να κανει το gnuplot τις γραφικες
παραστασεις, αυτες γινονται στο "τερματικο" (terminal) x11. Η ιδεα
του "τερματικου" ειναι γενικη και μπορει να ειναι μια αλλη γλωσσα
αναπαραστασης γραφικων (postscript, jpeg, fig κλπ). Αλλαζοντας την
γλωσσα αναπαραστασης των γραφικων μπορουμε να σωσουμε τη γραφικη
παρασταση σε ενα αρχειο που να μπορει να επεξεργαστει αλλο προγραμμα.
set terminal postscript color
32 set output "test.ps" replot set output set terminal x11
Με την δευτερη εντολη ανοιξαμε το αρχειο test.ps, με την τριτη ξανακαναμε τη γραφικη
παρασταση μεσα στο αρχειο, με την τεταρτη το κλεισαμε και με την
πεμπτη επιστρεψαμε την εξοδο του προγραμματος στο τερματικο x11. Τωρα
μπορουμε να δουμε το αρχειο test.ps
χρησιμοποιωντας εξωτερικα προγραμματα απο τη γραμμη εντολων:
gv test.ps
& ps2pdf test.ps
test.pdf acroread
test.pdf
Με τις δυο τελευταιες εντολες βαλαμε την γραφικη παρασταση σε αρχειο
με το γνωστο τυπο Adobe PDF.
Με τις παρακατω εντολες μπορουμε να σωσουμε το αρχειο μας σε
μορφη png που ειναι ενας κοινος τυπος εικονας που χρησιμοποιηται στο
διαδικτυο:
set terminal png color
32 set output "test.png" replot set output set terminal x11
και μετα απο τη γραμμη εντολων
xv
test.jpg
η
ee
test.jpg
Τελος, μπορειτε να σωσετε τη δουλεια σας με την εντολη:
save "myplot.gplt"
Αν αργοτερα θελετε να συνεχισετε απο το σημειο στο οποιο βρισκεστε
τωρα δεν εχετε παρα στο καινουργιο gnuplot να δωσετε την εντολη
load "myplot.gplt"
Εξεταστε το αρχειο myplot.gplt. Αποτελειται απο σειρα εντολων του
gnuplot. Μπορειτε να γραψετε μια οποιαδηποτε σειρα εντολων σε ενα
αρχειο και να το "φορτωσετε" με την παραπανω εντολη.
Το gnuplot εχει πληρες συστημα βοηθειας on line. Δεν εχετε παρα
να δωσετε την εντολη
help
για να παρετε μια γευση. Για βοηθεια σε μια συγκεκριμενη εντολη, απλα
προσθετετε το ονομα της:
help plot help plot with help set help set terminal postscript
Ανοιξτε το xfig με την εντολη
xfig
&
Παρατηρηστε ανω δεξια την περιοχη που εχει τη μορφη
Τα τρια τετραγωνακια παριστανουν τα τρια κουμπια του ποντικιου. Καθως
κινηται το ποντικι πανω απο περιοχες/κουμπια που εχουν συγκεκριμενη
λειτουργια, ο χωρος αυτος σας δειχνει την λειτουργια καθε
κουμπιου. Περαστε το ποντικι πανω απο διαφορες περιοχες και δειτε πως
αλλαξει το κειμενο στην περιοχη αυτη. Προσπαθηστε να μαντεψετε τη
σημασια των λειτουργιων που περιγραφονται.
Επιλεξτε να ζωγραφισετε ορισμενα βασικα σχηματα κανοντας
αριστερο κλικ στα αντιστοιχα κουμπια. Διαλεξτε λ.χ. να φτιαξετε ενα
κυκλο απο το κουμπι
Αλλαξτε το χρωμα του περιγραμματος απο το κουμπι
->
Φτιαξτε καινουργιο κυκλο. Στη συνεχεια διαλεξτε να βαλετε στο
εσωτερικο χρωμα:
->
->
και ζωγραφιστε παλι ενα κυκλο.
Τωρα ζωγραφιστε τα υπολοιπα σχηματα που δινονται στο καμβα
επιλεγοντας τα ενα ενα. Κοιτατε την επανω αριστερα περιοχη για να
δειτε με ποια κουμπια του ποντικιου βαζετε τα χαρακτηριστικα σημεια
που οριζουν το σχημα. Αλλαξτε χρωματα και γεμισματα. Αλλαξτε το παχος
του περιγραμματος απο το κουμπι
Εισαγετε κειμενο στην εικονα απο το κουμπι
και καθοριστε το μεγεθος των γραμματων απο το κουμπι
ενω τη γραμματοσειρα απο
Εισαγετε μια εικονα με το κουμπι
και αφου επιλεξετε την περιοχη εισαγωγης της, απαντηστε στο διαλογο
οτι θελετε να εισαγετε το αρχειο dog.gif
Ας κανουμε μια απλη επεξεργασια των σχηματων. Διαλεξτε ενα ενα
τα παρακατω εικονιδια και με το ποντικι μεγαλωστε τα, μετακινηστε τα,
αντιγραψτε τα, αλλαξτε τους προσανατολισμο.
Σωστε τη δουλεια σας με
File -> Save As
στο αρχειο myfig.fig
Μετα σωστε το...καλλιτεχνημα σας σε αλλη μορφη. Χρησιμοποιηστε
File-> Export και σωστε το σε
encapsulated postscript (δεν χρειαζεται να αλλαξετε τιποτα στο
διαλογο, μονο βαλετε το ονομα του αρχειου) myfig.eps Δειτε τωρα το αρχειο με την εντολη
gv myfig.eps
Κανετε export σε μορφη jpeg. Απο
File-> Export->Language->jpeg και
σωστε το σαν myfig.jpg. Δειτε το με την
εντολη
xv
myfig.jpg
η
ee
myfig.jpg
Βγητε τωρα απο το xfig File->Exit. Επανεκκινηστε με την εντολη
xfig myfig.fig
& και συνεχιστε απο εκει που βρισκοσαστε.
Επιλεξτε τωρα File-> Open και
διαλεξτε το αρχειο plot3d.fig. Επεξεργαστητε το και σωστε το στην
μορφη που σας αρεσει. Χρησιμοποιηστε τη φαντασια σας να φτιαξετε κατι
ωραιο. Καλη διασκεδαση........