Matplotlib - Multiplot

In questo capitolo impareremo come creare più sottotrame sulla stessa tela.

Il subplot()restituisce l'oggetto assi in una data posizione della griglia. La firma della chiamata di questa funzione è:

plt.subplot(subplot(nrows, ncols, index)

Nella figura corrente, la funzione crea e restituisce un oggetto Axes, all'indice di posizione di una griglia di nrows per ncolsaxes. Gli indici vanno da 1 a nrows * ncols, con incremento in ordine di riga maggiore. Ifnrows, ncols e index sono tutti inferiori a 10. Gli indici possono anche essere forniti come numero singolo, concatenato, a tre cifre.

Ad esempio, sottotrama (2, 3, 3) e sottotrama (233) creano entrambi un asse nell'angolo in alto a destra della figura corrente, occupando metà dell'altezza della figura e un terzo della larghezza della figura.

La creazione di una sottotrama eliminerà qualsiasi sottotrama preesistente che si sovrappone ad essa oltre la condivisione di un confine.

import matplotlib.pyplot as plt
# plot a line, implicitly creating a subplot(111)
plt.plot([1,2,3])
# now create a subplot which represents the top plot of a grid with 2 rows and 1 column.
#Since this subplot will overlap the first, the plot (and its axes) previously 
created, will be removed
plt.subplot(211)
plt.plot(range(12))
plt.subplot(212, facecolor='y') # creates 2nd subplot with yellow background
plt.plot(range(12))

La riga di codice sopra genera il seguente output:

La funzione add_subplot () della classe figure non sovrascriverà il grafico esistente -

import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot([1,2,3])
ax2 = fig.add_subplot(221, facecolor='y')
ax2.plot([1,2,3])

Quando la riga di codice sopra viene eseguita, genera il seguente output:

È possibile aggiungere un grafico a inserti nella stessa figura aggiungendo un altro oggetto assi nella stessa tela della figura.

import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
fig=plt.figure()
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # main axes
axes2 = fig.add_axes([0.55, 0.55, 0.3, 0.3]) # inset axes
y = np.sin(x)
axes1.plot(x, y, 'b')
axes2.plot(x,np.cos(x),'r')
axes1.set_title('sine')
axes2.set_title("cosine")
plt.show()

All'esecuzione della riga di codice precedente, viene generato il seguente output: