Η python μας δίνει τη δυνατότητα και τα εργαλεία για να σχεδιάσουμε γραφικές παραστάσεις. Αυτές μπορεί να είναι οι συνήθεις γραφική παράσταση μίας συνάρτησης f(x) αλλά μπορεί να είναι και διάσπαρτα σημεία στο επίπεδο (π.χ., αναπαράσταση πειραματικών δεδομένων μαζί με τα σφάλματά τους), ιστογράμματα, επιφάνειες στον χώρο, κλπ.
Η βιβλιοθήκη η οποία μας δίνει τα εργαλεία για γραφικές παραστάσεις είναι η matplotlib
και η πρόσβαση σε αυτή γίνεται μέσω του πακέτου matplotlib.pyplot
.
Θα δούμε τον απλούστερο τρόπο για να σχεδιάσουμε την γραφική παράσταση συνάρτησης f(x) = x2.
Πρώτα δημιουργούμε μία σειρά σημείων x
xp = []
yp = []
dx = 0.1 # οι θέσεις στον άξονα x θα απέχουν μεταξύ τους dx
for i in range(-5,6):
xpoint = i*dx
xp.append(xpoint)
yp.append(xpoint**2)
Παρατηρήστε ότι θα μπορούσαμε να δημιουργήσουμε τις παραπάνω δύο λίστες με απλούστερο τρόπο.
dx = 0.1
xp = [i*dx for i in range(-5,6)]
yp = [xpoint**2 for xpoint in xp]
Θα τυπώσουμε τα σημεία (xi, yi).
import matplotlib.pyplot as plt
plt.plot(xp,yp,'o') # τυπώνονται τα σημεία (xp[i],yp[i]) με κυκλάκια ('ο')
plt.show() # εντολή να εμφανιστεί το γράφημα στην οθόνη
Μπορούμε να ενώσουμε με συνεχή γραμμή τα διαδοχικά σημεία.
import matplotlib.pyplot as plt
plt.plot(xp,yp,'b-') # Επιλέγουμε συνεχή (-) μπλέ (b) γραμμή
plt.show()
Ας δούμε ένα πλήρες πρόγραμμα το οποίο σχεδιάζει γραφική παράσταση, γράφει ονόματα αξόνων κλπ.
import matplotlib.pyplot as plt
dx = 0.01
xp = [i*dx for i in range(-50,51)]
yp = [xpoint**2 for xpoint in xp]
plt.plot(xp,yp,'-k')
plt.xlabel('$x$')
plt.ylabel('$f(x)$')
plt.title("Plot of $f(x)=x^2$")
plt.show()
Η συνάρτηση ex προσεγγίζεται από το πολυώνυμο 1 + x + x2/2 κοντά στο σημείο x=1. Θα σχεδιάσουμε τις γραφικές παραστάσεις και των δύο συναρτήσεων.
import matplotlib.pyplot as plt
import math
dx = 0.01
xp = [i*dx for i in range(-200,201)]
yp = [math.exp(x) for x in xp]
ya = [1.0+x+x**2/2.0 for x in xp]
plt.plot(xp,yp,'-k',xp,ya,'b--')
plt.xlabel('$x$')
plt.ylabel('$f(x)$')
plt.text(1.55,6.0,'$e^x$',fontsize=14) # γράφει κείμενο στο γράφημα
plt.text(1.4,3.0,'$1+x+x^2/2$',fontsize=14)
plt.show()