Il problema è l'uso di aspect='equal'
, che impedisce alle sottotrame di allungarsi a proporzioni arbitrarie e riempire tutto lo spazio vuoto.
Normalmente, questo funzionerebbe:
import matplotlib.pyplot as plt
ax = [plt.subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
plt.subplots_adjust(wspace=0, hspace=0)
Il risultato è questo:
Tuttavia, con aspect='equal'
, come nel codice seguente:
import matplotlib.pyplot as plt
ax = [plt.subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
a.set_aspect('equal')
plt.subplots_adjust(wspace=0, hspace=0)
Questo è ciò che otteniamo:
La differenza in questo secondo caso è che hai forzato gli assi xey per avere lo stesso numero di unità / pixel. Poiché gli assi vanno da 0 a 1 per impostazione predefinita (cioè prima di tracciare qualsiasi cosa), l'uso aspect='equal'
forza ogni asse di essere un quadrato. Poiché la figura non è un quadrato, il pyplot aggiunge una spaziatura extra tra gli assi orizzontalmente.
Per aggirare questo problema, puoi impostare la tua figura in modo che abbia le proporzioni corrette. Useremo l'interfaccia pyplot orientata agli oggetti qui, che considero superiore in generale:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(8,8)) # Notice the equal aspect ratio
ax = [fig.add_subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
a.set_aspect('equal')
fig.subplots_adjust(wspace=0, hspace=0)
Ecco il risultato:
None
non sta facendo quello che pensi, significa "usa il valore predefinito".