Als erstes: IPython interaktiv machen:
%matplotlib inline
# bei euch: %matplotlib (nur in iPython)
Um mit Matplotlib arbeiten zu können, muss die Bibliothek erst einmal importiert werden. Damit wir nicht so viel tippen müssen geben wir ihr einen kürzeren Namen:
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = (10, 8)
plt.rcParams['font.size'] = 16
plt.rcParams['lines.linewidth'] = 2
Außerdem brauchen wir ein paar Funktion aus numpy
, die euch schon bekannt sind
import numpy as np
Ein einfaches Beispiel: $f(x)=x^2$
x = np.linspace(0, 1) # gibt 50 Zahlen in gleichmäßigem Abstand von 0–1
plt.plot(x, x**2)
# Falls nicht interaktiv:
# plt.show()
Anderes Beispiel: $\sin(t)$ mit verschiedenen Stilen. Vorsicht, die Funktionen und $\pi$ sind Bestandteil von numpy
t = np.linspace(0, 2 * np.pi)
plt.plot(t, np.sin(t))
plt.plot(t, np.sin(t), 'r--')
plt.plot(t, np.sin(t), 'go')
Tabelle mit allen Farben und Styles: matplotlib.axes.Axes.plot
Neue Grenzen mit xlim(a, b)
und ylim(a, b)
plt.plot(t, np.sin(t))
plt.xlim(0, 2 * np.pi)
plt.ylim(-1.2, 1.2)
with plt.xkcd():
plt.title('Axes with labels')
plt.plot(t, np.sin(t))
plt.xlabel('t / s')
plt.ylabel('U / V')
plt.ylim(-1.1, 1.1)
plt.xlim(0, 2 * np.pi)
Achsen-Beschriftungen können mit LaTeX-Code erstellt werden → LaTeX-Kurs in der nächsten Woche.
plt.plot(t, np.sin(t))
plt.xlabel(r'$t / \mathrm{s}$')
plt.ylabel(r'$U / \mathrm{V}$')
plt.plot(t, np.sin(t))
plt.xlabel(r'$t / \mathrm{s}$')
plt.ylabel(r'$U \,/\, \mathrm{V}$') # Spaces sind Geschmacksfrage……
Mehr zu Einheiten gibt es im LaTeX-Kurs.
Legenden für Objekte die ein label
tragen
plt.plot(t, np.sin(t), label=r'$\sin(t)$')
plt.legend()
#plt.legend(loc='lower left')
#plt.legend(loc='best')
Seit matplotlib 2.0.2 ist loc=best
standardmäßig eingestellt.
Andere möglche Orte für die Legende findest du hier:
Mit grid()
wird ein Gitter erstellt:
plt.plot(t, np.sin(t))
plt.grid()
x, y = np.genfromtxt('data/example_data_linear.txt', unpack=True)
plt.plot(x, y, 'k.')
t = np.linspace(0, 10)
plt.plot(t, 5 * t, 'r-')
Speichert den folgenden Code in eine Textdatei plot.py
ab.
Öffnet ein Terminal und startet das Programm:
python plot.py
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 1)
plt.plot(x, x**2, 'b-')
plt.savefig('plot.pdf')
Mit savefig
speichert man die Abbildung.
In diesem Fall sollte die Datei plot.pdf
erstellt worden sein.
Es gibt viele Ausgabeformate: pdf
, png
, svg
, LaTeX
Um mehrere Plots zu speichern kann man plt.clf()
verwenden. Der Befehl leert die aktuelle figure und steht für clear figure
.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 1)
### Plot 1
plt.clf()
plt.plot(x, x**2, 'b-',label='Plot 1')
plt.legend()
plt.savefig('plot_1.pdf')
### Plot 2
plt.clf()
plt.plot(x, x**3, 'r-')
plt.savefig('plot_2.pdf')
Natürlich kann man mehrere Linien in einen Plot packen:
x = np.linspace(0, 1)
plt.plot(x, x**2, label=r'$x^2$')
plt.plot(x, x**4)
plt.plot(x, x**6, 'o', label=r'$x^6$')
plt.legend()