Pythonic Matplotlib #

Alcune persone preferiscono scrivere più codice "Pythonic", esplicito orientato agli oggetti, piuttosto che utilizzare l'interfaccia pyplot implicita per Matplotlib. Questo esempio mostra come sfruttare l'interfaccia Matplotlib esplicita.

A meno che tu non sia uno sviluppatore di applicazioni, ti consiglio di utilizzare parte dell'interfaccia pyplot, in particolare i comandi figure, close, subplot, axis e show. Questi ti nascondono molta complessità che non hai bisogno di vedere nella normale creazione di figure, come istanziare istanze DPI, gestire i riquadri di delimitazione degli elementi della figura, creare e realizzare finestre GUI e incorporare figure in esse.

Se sei uno sviluppatore di applicazioni e desideri incorporare Matplotlib nella tua applicazione, segui la guida di examples/embedding_in_wx.py, examples/embedding_in_gtk.py o examples/embedding_in_tk.py. In questo caso vorrai controllare la creazione di tutte le tue figure, incorporandole nelle finestre dell'applicazione, ecc.

Se sei uno sviluppatore di applicazioni Web, potresti voler utilizzare l'esempio in webapp_demo.py, che mostra come utilizzare direttamente il backend agg figure canvas, senza nessuno dei globali (figura corrente, assi correnti) presenti nel pyplot interfaccia. Si noti che non vi è alcun motivo per cui l'interfaccia pyplot non funzioni per gli sviluppatori di applicazioni Web, tuttavia.

Se vedi un esempio negli esempi dir scritti nell'interfaccia pyplot e vuoi emularlo usando le vere chiamate al metodo Python, c'è una semplice mappatura. Molti di questi esempi usano 'set' per controllare le proprietà della figura. Ecco come mappare quei comandi sui metodi di istanza

La sintassi di set è:

plt.setp(object or sequence, somestring, attribute)

se chiamato con un oggetto, imposta le chiamate:

object.set_somestring(attribute)

se chiamato con una sequenza, set fa:

for object in sequence:
   object.set_somestring(attribute)

Quindi per il tuo esempio, se a è il tuo oggetto assi, puoi fare:

a.set_xticklabels([])
a.set_yticklabels([])
a.set_xticks([])
a.set_yticks([])
Un'onda sinusoidale o due
import matplotlib.pyplot as plt
import numpy as np

t = np.arange(0.0, 1.0, 0.01)

fig, (ax1, ax2) = plt.subplots(2)

ax1.plot(t, np.sin(2*np.pi * t))
ax1.grid(True)
ax1.set_ylim((-2, 2))
ax1.set_ylabel('1 Hz')
ax1.set_title('A sine wave or two')

ax1.xaxis.set_tick_params(labelcolor='r')

ax2.plot(t, np.sin(2 * 2*np.pi * t))
ax2.grid(True)
ax2.set_ylim((-2, 2))
l = ax2.set_xlabel('Hi mom')
l.set_color('g')
l.set_fontsize('large')

plt.show()

Galleria generata da Sphinx-Gallery