Gnuplot, xfig: Κατασκευή γραφημάτων, σχηματων και επεξεργασία εικόνας.

Στοχος του εργαστηριου ειναι να εξοικειωθητε με τη βασικη χρηση του gnuplot και του xfig και να μαθετε να κατασκευαζετε απλες γραφικες παραστασεις και σχηματα.


Προετοιμασια

Απο τη σελιδα της 9ης διαλεξης επισκευθειτε τους ακολουθους συνδεσμους:
  1. Επισκευθειτε τον συνδεσμο του gnuplot με τα παραδειγματα κατασκευης γραφικων παραστασεων. Μελετηστε τις εντολες που τα κατασκευαζουν και αναζητηστε τις εννοιες που δεν καταλαβαινετε στο αναλυτικο εγχειριδιο.
  2. Επισκευθειτε τον συνδεσμο του εγχειριδιου του xfig και μαθετε τις βασικες λειτουργιες του λογισμικου.
Θα χρειαστητε τα παρακατω αρχεια. Κατεβαστε τα και σωστε τα με το ονομα που δινεται σε εναν υποκαταλογο της αρεσκειας σας μεσα στον οποιο θα δουλεψετε:

Στο Εργαστηριο:

  1. Ανοιξτε ενα τερματικο xterm. Καλεστε το gnuplot με την εντολη:
    gnuplot
  2. Εκτελεστε μεσα απο το gnuplot την εντολη
    quit
    βγητε απο το προγραμμα και ξαναξεκινηστε το.
  3. Για να δειτε πως φτιαχνονται απλες γραφικες παραστασεις, εκτελεστε διαδοχικα τις εντολες:
    plot x*sin(x)
    replot x*cos(x)
    replot cos(2*x)
  4. Ανοιξτε το ερωτηματολόγιο...
  5. Στη γραφικη παρασταση μπορειτε να προσθεσετε τιτλο, καθως και να βαλετε ετικετες στους αξονες:
    set title "Trigonometria"
    replot
    set xlabel "x"
    replot
    set ylabel "y"
    replot
  6. Μπορειτε να αλλαξετε τα ορια στους αξονες βαζοντας τα σε αγκυλες στην εντολη 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)
  7. Καθοριστε την ονομασια καθε καμπυλης:
    plot x*sin(x) title "Hmitono" ,x*cos(x) title "Synimitono"
  8. Καθαριστε τον τιτλο της γραφικης παραστασης και τους αξονες:
    set title
    set xlabel
    set ylabel
    replot
  9. Απο τη γραμμη εντολων του gnuplot, μπορειτε να ανακαλεσετε παλιες εντολες με τα ανω/κατω βελακια. Μετακινωντας τον cursor με τα δεξια/αριστερα βελακια μπορειτε να κανετε ευκολα αλλαγες σε προηγουμενη εντολη. Ανακαλεστε με τα βελακια την σχετικη εντολη και διορθωστε την ωστε να εκτελεσετε:
    plot (x**2)*sin(x) title "Hmitono" ,(x**2)*cos(x) title "Synimitono"
  10. Μπορειτε να ορισετε συναρτησεις με δικα σας ονοματα:
    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)
  11. Στην τελευταια γραφικη παρασταση, παρατηρουμε γωνιες που δεν φαινονται να ειναι η πραγματικη συμπεριφορα της συναρτησης. Οντως, το προγραμμα για να κανει τη γραφικη παρασταση επιλεγει 100 σημεια και τα ενωνει με ευθειες γραμμες. Αυτο ελεγχεται απο την παραμετρο samples:
    set samples 2000
    replot
    set samples 20
    replot
    set samples 100
    replot
  12. Αυτο φαινεται καλυτερα αν η γραφικη παρασταση γινει με σημεια:
    plot [0:40] x*cos(x)*f(x) with points
    set samples 20
    replot
    set samples 2000
    replot
    set samples 100
    replot
  13. Μπορειτε να κανετε την γραφικη παρασταση με διαφορετικα στυλ!
    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
  14. Δειτε τα χαρακτηριστικα σημεια μιας συναρτησης με πιο πολυ λεπτομερεια:
    set grid
    replot
    set nogrid
    replot
  15. Δεν σας αρεσει η θεση των τιτλων; Αλλαξτε την...
    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
  16. Μπορουμε να βαλουμε στην γραφικη παρασταση κειμενο σε οποιο σημειο θελουμε:
    set label "My label" at 30,4
    replot
  17. και να δειξουμε οπου θελουμε:
    set arrow from 30,4 to 14,6.3
    replot
    set nolabel
    set noarrow
    replot
  18. Πολλες φορες σε μια γραφικη παρασταση παρουσιαζονται μεγαλες διαφορες στην αριθμητικη κλιμακα των τιμων μιας συναρτησης ή και του πεδιου ορισμου της. Στην περιπτωση αυτη θελουμε να κανουμε λογαριθμικη γραφικη παρασταση σε εναν ή και στους δυο αξονες.
    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. Γιατι;
  19. Με το 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
  20. Με το 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)
  21. Με το 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
  22. Οταν τα δεδομενα μας προερχονται απο πειραματικες ή στατιστικες μετρησεις, περιεχουν σφαλματα. Κοιταξτε παλι το αρχειο data1. Η τριτη στηλη ειναι το σφαλμα στην μετρηση του x και η τεταρτη το σφαλμα στη μετρηση του y:
    plot "data1" using 1:2:3 with errorbars
    plot "data1" using 1:2:3:4 with xyerrorbars
  23. Μπορουμε να συνδυασουμε τη γραφικη παρασταση περισσοτερων ποσοτητων. Εξεταστε τωρα το αρχειο 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
  24. Οταν δινουμε τις εντολες για να κανει το 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.
  25. Με τις παρακατω εντολες μπορουμε να σωσουμε το αρχειο μας σε μορφη png που ειναι ενας κοινος τυπος εικονας που χρησιμοποιηται στο διαδικτυο:
    set terminal png color 32
    set output "test.png"
    replot
    set output
    set terminal x11
    και μετα απο τη γραμμη εντολων
    xv test.jpg
    η
    ee test.jpg
  26. Τελος, μπορειτε να σωσετε τη δουλεια σας με την εντολη:
    save "myplot.gplt"
    Αν αργοτερα θελετε να συνεχισετε απο το σημειο στο οποιο βρισκεστε τωρα δεν εχετε παρα στο καινουργιο gnuplot να δωσετε την εντολη
    load "myplot.gplt"
  27. Εξεταστε το αρχειο myplot.gplt. Αποτελειται απο σειρα εντολων του gnuplot. Μπορειτε να γραψετε μια οποιαδηποτε σειρα εντολων σε ενα αρχειο και να το "φορτωσετε" με την παραπανω εντολη.
  28. Το gnuplot εχει πληρες συστημα βοηθειας on line. Δεν εχετε παρα να δωσετε την εντολη
    help
    για να παρετε μια γευση. Για βοηθεια σε μια συγκεκριμενη εντολη, απλα προσθετετε το ονομα της:
    help plot
    help plot with
    help set
    help set terminal postscript
  29. Ανοιξτε το xfig με την εντολη
    xfig &
    Παρατηρηστε ανω δεξια την περιοχη που εχει τη μορφη

    Τα τρια τετραγωνακια παριστανουν τα τρια κουμπια του ποντικιου. Καθως κινηται το ποντικι πανω απο περιοχες/κουμπια που εχουν συγκεκριμενη λειτουργια, ο χωρος αυτος σας δειχνει την λειτουργια καθε κουμπιου. Περαστε το ποντικι πανω απο διαφορες περιοχες και δειτε πως αλλαξει το κειμενο στην περιοχη αυτη. Προσπαθηστε να μαντεψετε τη σημασια των λειτουργιων που περιγραφονται.
  30. Επιλεξτε να ζωγραφισετε ορισμενα βασικα σχηματα κανοντας αριστερο κλικ στα αντιστοιχα κουμπια. Διαλεξτε λ.χ. να φτιαξετε ενα κυκλο απο το κουμπι

    Αλλαξτε το χρωμα του περιγραμματος απο το κουμπι
    ->
    Φτιαξτε καινουργιο κυκλο. Στη συνεχεια διαλεξτε να βαλετε στο εσωτερικο χρωμα:
    ->

    ->
    και ζωγραφιστε παλι ενα κυκλο.
  31. Τωρα ζωγραφιστε τα υπολοιπα σχηματα που δινονται στο καμβα επιλεγοντας τα ενα ενα. Κοιτατε την επανω αριστερα περιοχη για να δειτε με ποια κουμπια του ποντικιου βαζετε τα χαρακτηριστικα σημεια που οριζουν το σχημα. Αλλαξτε χρωματα και γεμισματα. Αλλαξτε το παχος του περιγραμματος απο το κουμπι

  32. Εισαγετε κειμενο στην εικονα απο το κουμπι

    και καθοριστε το μεγεθος των γραμματων απο το κουμπι

    ενω τη γραμματοσειρα απο

  33. Εισαγετε μια εικονα με το κουμπι

    και αφου επιλεξετε την περιοχη εισαγωγης της, απαντηστε στο διαλογο οτι θελετε να εισαγετε το αρχειο dog.gif
  34. Ας κανουμε μια απλη επεξεργασια των σχηματων. Διαλεξτε ενα ενα τα παρακατω εικονιδια και με το ποντικι μεγαλωστε τα, μετακινηστε τα, αντιγραψτε τα, αλλαξτε τους προσανατολισμο.

  35. Σωστε τη δουλεια σας με File -> Save As στο αρχειο myfig.fig Μετα σωστε το...καλλιτεχνημα σας σε αλλη μορφη. Χρησιμοποιηστε File-> Export και σωστε το σε encapsulated postscript (δεν χρειαζεται να αλλαξετε τιποτα στο διαλογο, μονο βαλετε το ονομα του αρχειου) myfig.eps Δειτε τωρα το αρχειο με την εντολη
    gv myfig.eps
  36. Κανετε export σε μορφη jpeg. Απο File-> Export->Language->jpeg και σωστε το σαν myfig.jpg. Δειτε το με την εντολη
    xv myfig.jpg
    η
    ee myfig.jpg
  37. Βγητε τωρα απο το xfig File->Exit. Επανεκκινηστε με την εντολη
    xfig myfig.fig &
    και συνεχιστε απο εκει που βρισκοσαστε.
  38. Επιλεξτε τωρα File-> Open και διαλεξτε το αρχειο plot3d.fig. Επεξεργαστητε το και σωστε το στην μορφη που σας αρεσει. Χρησιμοποιηστε τη φαντασια σας να φτιαξετε κατι ωραιο. Καλη διασκεδαση........