# Οδηγός: Γραφήματα δύο διαστάσεων με την wxplot2d

Το wxMaxima παράγει γραφήματα σε δύο και σε τρεις διαστάσεις μέσα στο κείμενο.
Αυτός ο οδηγός δείχνει πώς να σχεδιάσετε δισδιάστατα γραφήματα χρησιμοποιώντας
το wxMaxima. Επίσης δείχνει μερικούς τρόπους για να βάλετε περισσότερες πληροφορίες
σε αυτά σε σχέση με όσες παράγονται με τις προεπιλεγμένες ρυθμίσεις του wxMaxima.
Ο οδηγός ξεκινάει με το γράφημα της x*sin(x), με το x να παίρνει τιμές από το -5
έως το 5, τις προεπιλεγμένες τιμές του wxMaxima.

## Σχεδιάζοντας μία μεταβλητή

Το παρακάτω διάγραμμα παράγεται επιλέγοντα (Graphics) ς Plot->Plot 2d (Γράφημα->2-Δ γράφημα) από το μενού
ή κάνοντας κλικ στο κουμπί Plot2D στο κάτω μέρος της οθόνης. Εναλλακτικά, η εντολή μπορεί
να εισαχθεί απευθείας στο κελί.

Για να εκτελέσετε οποιαδήποτε εντολή παρακάτω, χρησιμοποιήστε τα "Ctrl-Enter" ή τα "Shift-Enter".

wxplot2d([x*sin(x)], [x,-5,5])$

Σημείωση: Οποιαδήποτε στιγμή, ένα γράφημα μπορεί να αποθηκευτεί σε ένα αρχείο. Κάντε
κλικ στην εικόνα. Έπειτα επιλέξτε από το μενού Edit->Selection to image 
(Επεξεργασία->Αποθήκευση επιλογής σε εικόνα) και αποθηκεύστε το γράφημα.

Ας προσθέσουμε τώρα τίτλους στον οριζόντιο και τον κατακόρυφο άξονα. Προσέξτε τη χρήση
λιστών. Κάθε νέο σετ οδηγιών αποτελείται από μία λίστα (βλ. αγκύλες).

wxplot2d([x*sin(x)], [x,-5,5], [xlabel, "x(m)"], [ylabel, "Displacement (m)"])$

## Χειρισμός αναλογιών και αναπαράσταση δύο συναρτήσεων

Για ορισμένους σκοπούς, κάποιος μπορεί να θέλει να χειριστεί τον άξονα y, όπως και τον άξονα x.
Θεωρήστε την ακόλουθη συνάρτηση, η οποία σχεδιάζει έναν κύκλο χρησιμοποιώντας δύο ξεχωριστές
συναρτήσεις. Το σχήμα που ακολουθεί παρουσιάζει δύο προβλήματα σχετικά με την παρουσίαση των
συναρτήσεων: τη χρήση διαφορετικής κλίμακας στους δύο άξονες και το ότι δεν έχει ξεκάθαρο υπόμνημα
για τις δύο διαφορετικές συναρτήσεις. 

wxplot2d([sqrt(4-x^2),-sqrt(4-x^2)], [x,-2.5,2.5],[y,-2.5,2.5])$

Δύο πτυχές αυτού του γραφήματος χρειάζονται προσοχή. Προφανέστατα, ο "κύκλος"
δείχνει ιδιαίτερα μη-σφαιρικός. Δεύτερον, ένα υπόμνημα εμφανίστ (Graphics) ηκε, το οποίο
ίσως να θέλουμε να κάνουμε πιο σαφές. Ένα υπόμνημα εμφανίζεται όποτε σχεδιάζονται
περισσότερες της μίας συναρτήσεις.

Το πρώτο πρόβλημα σχετίζεται με το γεγονός ότι το Maxima δεν θεωρεί ότι οι άξονες
x και y έχουν τις ίδιες μονάδες, και "τραβάει" το σχήμα έτσι ώστε ένα εκατοστό
του κατακόρυφου άξονα να αντιστοιχεί σε περισσότερες μονάδες σε σχέση με ένα
εκατοστό του οριζόντιου άξονα.

Για να αποφύγουμε την παραμόρφωση, ζητάμε από την wxplot2d να παράξει ένα
τετράγωνο γράφημα.

Μια ακόμα επιλογή για την αποφυγή της παραμόρφωσης εμφανίζεται παρακάτω.

Για να προσθέσετε περιεχόμενο στο υπόμνημα, προσθέστε μια επιλογή στο υπόμνημα.

wxplot2d([sqrt(4-x^2),-sqrt(4-x^2)], [x,-2.5,2.5],[y,-2.5,2.5],
[legend, "UpperSemiCircle", "LowerSemiCircle"],same_xy) /*,
wxplot_size=[400,400]*/$

Υποθέστε ότι θέλουμε μια πιο καθαρή εμφάνιση. Θα μπορούσαμε να κρύψουμε το υπόμνημα,
όπως παρακάτω. Επίσης, θα δούμε αργότερα σε αυτό τον οδηγό ότι θα ήταν δυνατό να
δώσουμε και στα δύο ημικύκλια το ίδιο χρώμα.

Παραπέρα, μπορούμε να αφαιρέσουμε το περίγραμμα γύρω από τον κύκλο και τις πληροφορίες
σχετικά με τις μονάδες, όπως επίσης και τους τίτλους των αξόνων.

wxplot2d([sqrt(4-x^2),-sqrt(4-x^2)], [x,-2.5,2.5],[y,-2.5,2.5],
[legend, false], [box,false], [xlabel, ""], [ylabel, ""],
same_xy)$

## Περισσότερα θέματα στην αναπαράσταση συναρτήσεων

Ας επιστρέψουμε στο παράδειγμα με το οποίο ξεκίνησε αυτός ο οδηγός και ας προσθέσουμε
άλλη μία συνάρτηση. Ταυτόχρονα, ας κάνουμε μια ακόμα αλλαγή: ας ορίσουμε τις συναρτήσεις
πριν να γράψουμε την εντολή wxplot2d. Τώρα, ας εισάγουμε τα ονόματα των συναρτήσεων στη 
λίστα συναρτήσεων (η οποία πριν περιείχε μόνο μία συνάρτηση, αυτή που τώρα ορίζεται ως f(x)).

Προσοχή: εάν χρησιμοποιήσετε αυτή την προσέγγιση, αποθηκεύσετε ό,τι κάνετε σε ένα αρχείο wxm
και το τρέξετε αργότερα, πρέπει να υπολογίσετε το κελί που ορίζει τις f(x) και g(x) πριν να
εκτελέσετε οποιαδήποτε άλλη εντολή που αναφέρεται σε κάποια από αυτές.

f(x) := x*sin(x)$
g(x) := cos(x)$
wxplot2d([f(x),g(x)], [x,-5,5], [xlabel, "x(m)"], 
[ylabel, "Displacement (m)"] )$

Στη συνέχεια, ας αλλάξουμε τα ονόματα στο υπόμνημα σε "Plot 1" και "Plot 2" και ας
αλλάξουμε τα στυλ γραμμών. Ας αφήσουμε την Plot 1 (x*sin(x)) όπως ήταν, λεπτή και μπλε.
Η Plot 2 (cos(x)) γίνεται πλατύτερη (πλάτος = 3) και το χρώμα της αλλάζει (κωδικός 
χρώματος = 4). Το βιβλίο οδηγιών του Maxima παρέχει την αντιστοιχία κωδικών με χρώματα.

wxplot2d([f(x),g(x)], [x,-5,5], [xlabel, "x(m)"],
 [ylabel, "Displacement (m)"], 
[legend, "Plot 1", "Plot 2"],  [style,[lines,1,1],[lines,3,4]]
);

Ένα τελευταίο σύνολο αλλαγών προσθέτει μερικές χρήσιμες λεπτομέρειες σε αυτό
το γράφημα. Για να γίνουν αυτές οι αλλαγές απαιτείται να προστεθεί ένα
"gnuplot_preamble", το οποίο είναι μια λίστα από επιλογές οι οποίες δεν είναι
διαθέσιμες εγγενώς στην εντολή wxpŗlot2d. Οι ακόλουθες επιλογές χρησιμοποιούνται:

Το υπόμνημα (key ή legend) μετακινείται στο κάτω μέρος του διαγράμματος, στο
κέντρο του οριζόντιου άξονα. Θα μπορούσε να μετακινηθεί κάτω αριστερά, κάτω δεξιά,
κέντρο αριστερά, κέντρο δεξιά κτλ. Επίσης, ένας τίτλος προστίθεται στο σχήμα.
plot2d: expression evaluates to non-numeric value somewhere in plotting range.
Παρατηρήστε τη σύνταξη. Όλες οι επιλογές είναι μέρος μιας λίστας, με το gnuplot_preamble
να είναι το πρώτο στοιχείο της. Όλες οι επιλογές εσωκλείονται σε διπλά εισαγωγικά.
Κάθε στοιχείο τελειώνει με μια άνω τελεία (;). Οι εγγραφές κειμένου εσωκλείονται σε 
μονά εισαγωγικά.

wxplot2d([f(x),g(x)], [x,-5,5], [xlabel, "x(m)"], [ylabel, "Displacement (m)"], 
[legend, "Plot 1", "Plot 2"],  [style,[lines,1,1],[lines,3,4]],
[gnuplot_preamble, " set grid; set key  bottom center; 
set title 'Two Series, An Example';  "]                             );

Μία τελευταία χρήση του υπομνήματος είναι για να ορίσουμε τον άξονα y να έχει
λογαριθμική κλίμακα. Θεωρήστε μια απλή συνάρτηση ανάπτυξης: y(t) = exp(g*t),
όπου t είναι η μονάδα χρόνου. Τα δύο γραφήματα παρακάτω αναπαριστούν δύο
συναρτήσεις: μια ταχεία ανάπτυξη με g = 5% ανά έτος και μία βραδεία ανάπτυξη
με g = 2% ανά έτος.

wxplot2d([f(x),g(x)], [x,-5,5], [xlabel, "x(m)"], [ylabel, "Displacement (m)"], 
[legend, "Plot 1", "Plot 2"],  [style,[lines,1,1],[lines,3,4]],
[gnuplot_preamble, " set grid; set key  bottom center; 
set title 'Two Series, An Example';  "]                          );

Η μετατροπή του κατακόρυφου άξονα σε λογαριθμικό επιτυγχάνει δύο πράγματα.
Η "βραδεία ανάπτυξη" δεν συμπιέζεται από την "ταχεία ανάπτυξη", ενώ επίσης
δίνεται έμφαση στη σταθερότητα του ρυθμού ανάπτυξης.

Η μετατροπή σε λογαριθμική κλίμακα απαιτεί να εισάγουμε την επιλογή
logscale y; στο gnuplot_preamble.

 wxplot2d([exp(0.05*t),exp(0.025*t)], [t,0,150],[ylabel, "Population"],
[xlabel, "Year t"], [legend, "Fast growth", "Slow growth"], 
[gnuplot_preamble, " set grid; set key top left; 
set title 'Growth Paths, Logarithmic Scale';  set logscale y; "]            )$