matplotlib Samouczek
Rozpoczęcie pracy z matplotlib
Szukaj…
Uwagi
Przegląd
matplotlib to biblioteka kreśląca dla Pythona. Zapewnia obiektowe interfejsy API do osadzania wykresów w aplikacjach. Jest podobny do MATLAB pod względem pojemności i składni.
Został pierwotnie napisany przez JDHunter i jest aktywnie rozwijany. Jest rozpowszechniany na licencji w stylu BSD.
Wersje
Wersja | Obsługiwane wersje Python | Uwagi | Data wydania |
---|---|---|---|
1.3.1 | 2.6, 2.7, 3.x | Starsza stabilna wersja | 2013-10-10 |
1.4.3 | 2.6, 2.7, 3.x | Poprzednia stabilna wersja | 2015-07-14 |
1.5.3 | 2.7, 3.x | Aktualna wersja stabilna | 11.01.2016 |
2.x | 2.7, 3.x | Najnowsza wersja programistyczna | 2016-07-25 |
Instalacja i konfiguracja
Istnieje kilka sposobów instalacji matplotlib, z których niektóre będą zależeć od używanego systemu. Jeśli masz szczęście, będziesz mógł użyć menedżera pakietów, aby łatwo zainstalować moduł matplotlib i jego zależności.
Windows
Na komputerach z systemem Windows możesz spróbować użyć menedżera pakietów pip, aby zainstalować matplotlib. Zobacz tutaj, aby uzyskać informacje na temat konfigurowania pip w środowisku Windows.
OS X
Zaleca się użycie menedżera pakietów pip do zainstalowania programu matplotlib. Jeśli chcesz zainstalować niektóre biblioteki inne niż Python w swoim systemie (np. libfreetype
), rozważ użycie homebrew .
Jeśli nie możesz użyć pip z jakiegokolwiek powodu, spróbuj zainstalować ze źródła .
Linux
W idealnym przypadku do zainstalowania matplotlib należy użyć menedżera pakietów systemowych lub pip, instalując pakiet python-matplotlib
lub uruchamiając pip install matplotlib
.
Jeśli nie jest to możliwe (np. Nie masz uprawnień sudo na --user
komputerze), możesz zainstalować ze źródła, używając opcji --user
: python setup.py install --user
. Zazwyczaj instaluje to matplotlib w ~/.local
.
Debian / Ubuntu
sudo apt-get install python-matplotlib
Fedora / Red Hat
sudo yum install python-matplotlib
Rozwiązywanie problemów
Zobacz stronę matplotlib, aby uzyskać porady dotyczące naprawy uszkodzonego matplotlib.
Dostosowywanie wykresu matplotlib
import pylab as plt
import numpy as np
plt.style.use('ggplot')
fig = plt.figure(1)
ax = plt.gca()
# make some testing data
x = np.linspace( 0, np.pi, 1000 )
test_f = lambda x: np.sin(x)*3 + np.cos(2*x)
# plot the test data
ax.plot( x, test_f(x) , lw = 2)
# set the axis labels
ax.set_xlabel(r'$x$', fontsize=14, labelpad=10)
ax.set_ylabel(r'$f(x)$', fontsize=14, labelpad=25, rotation=0)
# set axis limits
ax.set_xlim(0,np.pi)
plt.draw()
# Customize the plot
ax.grid(1, ls='--', color='#777777', alpha=0.5, lw=1)
ax.tick_params(labelsize=12, length=0)
ax.set_axis_bgcolor('w')
# add a legend
leg = plt.legend( ['text'], loc=1 )
fr = leg.get_frame()
fr.set_facecolor('w')
fr.set_alpha(.7)
plt.draw()
Składnia imperatywna vs. obiektowa
Matplotlib obsługuje zarówno drukowanie obiektowe, jak i imperatywną. Składnia imperatywna została celowo zaprojektowana tak, aby była bardzo zbliżona do składni Matlaba.
Składnia imperatywna (czasami nazywana składnią „maszyna-stan”) wydaje ciąg poleceń, z których wszystkie działają na najnowszej figurze lub osi (jak Matlab). Z drugiej strony składnia obiektowa wyraźnie działa na interesujące obiekty (figurę, oś itp.). Kluczowy punkt w zen Pythona stwierdza, że jawne jest lepsze niż niejawne, więc składnia obiektowa jest bardziej pythoniczna. Jednak imperatywna składnia jest wygodna w przypadku nowych konwersji z Matlaba i pisania małych, „wyrzucanych” skryptów fabuły. Poniżej znajduje się przykład dwóch różnych stylów.
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0, 2, 0.01)
y = np.sin(4 * np.pi * t)
# Imperative syntax
plt.figure(1)
plt.clf()
plt.plot(t, y)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude (V)')
plt.title('Sine Wave')
plt.grid(True)
# Object oriented syntax
fig = plt.figure(2)
fig.clf()
ax = fig.add_subplot(1,1,1)
ax.plot(t, y)
ax.set_xlabel('Time (s)')
ax.set_ylabel('Amplitude (V)')
ax.set_title('Sine Wave')
ax.grid(True)
Oba przykłady dają ten sam wykres, który pokazano poniżej.
Tablice dwuwymiarowe (2D)
Wyświetl tablicę dwuwymiarową (2D) na osiach.
import numpy as np
from matplotlib.pyplot import imshow, show, colorbar
image = np.random.rand(4,4)
imshow(image)
colorbar()
show()