matplotlibAan de slag met matplotlib


Opmerkingen

Overzicht

matplotlib is een plotbibliotheek voor Python. Het biedt objectgeoriënteerde API's voor het inbedden van plots in applicaties. Het is qua capaciteit en syntaxis vergelijkbaar met MATLAB.

Het is oorspronkelijk geschreven door JDHunter en wordt actief ontwikkeld. Het wordt gedistribueerd onder een BSD-Style License.

versies

Versie Ondersteunde Python-versies Opmerkingen Publicatiedatum
1.3.1 2.6, 2.7, 3.x Oudere stabiele versie 2013/10/10
1.4.3 2.6, 2.7, 3.x Vorige stabiele versie 2015/07/14
1.5.3 2.7, 3.x Huidige stabiele versie 2016/01/11
2.x 2.7, 3.x Nieuwste ontwikkelingsversie 2016/07/25

Een matplotlib-plot aanpassen

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()
 

voer hier de afbeeldingsbeschrijving in

# 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()
 

voer hier de afbeeldingsbeschrijving in

Gebiedende wijs versus object-georiënteerde syntaxis

Matplotlib ondersteunt zowel objectgeoriënteerde als imperatieve syntaxis voor plotten. De imperatieve syntaxis is opzettelijk ontworpen om zeer dicht bij de syntaxis van Matlab te liggen.

De imperatieve syntaxis (ook wel 'state-machine' syntaxis genoemd) geeft een reeks commando's af die allemaal werken op de meest recente figuur of as (zoals Matlab). De objectgeoriënteerde syntaxis daarentegen werkt expliciet in op de objecten (figuur, as, enz.) Die van belang zijn. Een belangrijk punt in de zen van Python stelt dat expliciet beter is dan impliciet, zodat de objectgeoriënteerde syntaxis meer pythonisch is. De imperatieve syntaxis is echter handig voor nieuwe converters van Matlab en voor het schrijven van kleine "wegwerp" plot-scripts. Hieronder ziet u een voorbeeld van de twee verschillende stijlen.

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)
 

Beide voorbeelden produceren dezelfde plot die hieronder wordt getoond.

voer hier de afbeeldingsbeschrijving in

Installatie en instellingen

Er zijn verschillende manieren om matplotlib te installeren, waarvan sommige afhankelijk zijn van het systeem dat u gebruikt. Als je geluk hebt, kun je een pakketbeheerder gebruiken om de matplotlib-module en zijn afhankelijkheden eenvoudig te installeren.

ramen

Op Windows-machines kunt u proberen de pip-pakketbeheerder te gebruiken om matplotlib te installeren. Zie hier voor informatie over het instellen van pip in een Windows-omgeving.

OS X

Het wordt aanbevolen dat u de pip- pakketbeheerder gebruikt om matplotlib te installeren. Als u enkele niet-Python-bibliotheken op uw systeem moet installeren (bijv. libfreetype ), overweeg dan om homebrew te gebruiken .

Als je om welke reden dan ook pip niet kunt gebruiken, probeer dan vanaf de bron te installeren.

Linux

In het ideale geval moet de systeempakketbeheerder of pip worden gebruikt om matplotlib te installeren, hetzij door het python-matplotlib pakket te pip install matplotlib of door pip install matplotlib .

Als dit niet mogelijk is (u hebt bijvoorbeeld geen sudo-rechten op de computer die u gebruikt), kunt u vanaf de bron installeren met de optie --user : python setup.py install --user . Doorgaans wordt hiermee matplotlib in ~/.local geïnstalleerd.

Debian / Ubuntu

sudo apt-get install python-matplotlib

Fedora / rode hoed

sudo yum install python-matplotlib

Probleemoplossen

Zie de matplotlib-website voor advies over het repareren van een kapotte matplotlib.

Tweedimensionale (2D) arrays

Geef een tweedimensionale (2D) array op de assen weer.

import numpy as np
from matplotlib.pyplot import imshow, show, colorbar

image = np.random.rand(4,4)
imshow(image)
colorbar()
show()
 

Toon tweedimensionale (2D) array met matplotlib