matplotlib Tutorial
Iniziare con matplotlib
Ricerca…
Osservazioni
Panoramica
matplotlib è una libreria di plottaggio per Python. Fornisce API orientate agli oggetti per incorporare grafici in applicazioni. È simile a MATLAB in termini di capacità e sintassi.
È stato originariamente scritto da JDHunter ed è in fase di sviluppo. È distribuito sotto una licenza BSD-Style.
Versioni
Versione | Versioni di Python supportate | Osservazioni | Data di rilascio |
---|---|---|---|
1.3.1 | 2.6, 2.7, 3.x | Versione stabile precedente | 2013/10/10 |
1.4.3 | 2.6, 2.7, 3.x | Versione stabile precedente | 2015/07/14 |
1.5.3 | 2.7, 3.x | Versione stabile attuale | 2016/01/11 |
2.x | 2.7, 3.x | Ultima versione di sviluppo | 2016/07/25 |
Installazione e configurazione
Esistono diversi modi per installare matplotlib, alcuni dei quali dipenderanno dal sistema che si sta utilizzando. Se sei fortunato, sarai in grado di utilizzare un gestore di pacchetti per installare facilmente il modulo matplotlib e le sue dipendenze.
finestre
Su macchine Windows puoi provare a utilizzare il gestore di pacchetti pip per installare matplotlib. Vedi qui per informazioni sulla configurazione di pip in un ambiente Windows.
OS X
Si consiglia di utilizzare il gestore di pacchetti pip per installare matplotlib. Se hai bisogno di installare alcune delle librerie non Python sul tuo sistema (es. libfreetype
) allora considera di usare homebrew .
Se non è possibile utilizzare pip per qualsiasi motivo, provare a installare dal sorgente .
Linux
Idealmente, il gestore di pacchetti di sistema o pip dovrebbe essere usato per installare matplotlib, sia installando il pacchetto python-matplotlib
sia eseguendo il programma di pip install matplotlib
.
Se ciò non è possibile (ad esempio non si dispone dei privilegi sudo sulla macchina che si sta utilizzando), è possibile eseguire l'installazione dal sorgente utilizzando l'opzione --user
: python setup.py install --user
. Tipicamente, questo installerà matplotlib in ~/.local
.
Debian / Ubuntu
sudo apt-get install python-matplotlib
Fedora / Red Hat
sudo yum install python-matplotlib
Risoluzione dei problemi
Vedere il sito web matplotlib per consigli su come riparare un matplotlib rotto.
Personalizzazione di un grafico 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()
Sintassi imperativa e orientata agli oggetti
Matplotlib supporta la sintassi sia orientata agli oggetti che imperativa per la stampa. La sintassi imperativa è intenzionalmente progettata per essere molto vicina alla sintassi di Matlab.
La sintassi imperativa (talvolta chiamata sintassi 'state-machine') emette una stringa di comandi che agiscono tutti sulla figura o sull'asse più recenti (come Matlab). La sintassi orientata agli oggetti, d'altra parte, agisce esplicitamente sugli oggetti (figura, asse, ecc.) Di interesse. Un punto chiave nello zen di Python afferma che l'esplicito è meglio di quello implicito, quindi la sintassi orientata agli oggetti è più pitonica. Tuttavia, la sintassi imperativa è conveniente per i nuovi convertiti da Matlab e per la scrittura di piccoli script di trama "usa e getta". Di seguito è riportato un esempio dei due diversi stili.
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)
Entrambi gli esempi producono lo stesso grafico che viene mostrato di seguito.
Array bidimensionali (2D)
Mostra una matrice bidimensionale (2D) sugli assi.
import numpy as np
from matplotlib.pyplot import imshow, show, colorbar
image = np.random.rand(4,4)
imshow(image)
colorbar()
show()