El problema es el uso de aspect='equal'
, que evita que las subtramas se extiendan a una relación de aspecto arbitraria y llenen todo el espacio vacío.
Normalmente, esto funcionaría:
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)
El resultado es este:
Sin embargo, con aspect='equal'
, como en el siguiente código:
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)
Esto es lo que obtenemos:
La diferencia en este segundo caso es que ha forzado a los ejes xey a tener el mismo número de unidades / píxel. Dado que los ejes van de 0 a 1 por defecto (es decir, antes de graficar nada), el uso aspect='equal'
obliga a que cada eje sea un cuadrado. Dado que la figura no es un cuadrado, pyplot agrega un espacio adicional entre los ejes horizontalmente.
Para solucionar este problema, puede configurar su figura para que tenga la relación de aspecto correcta. Vamos a utilizar la interfaz pyplot orientada a objetos aquí, que considero superior en general:
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)
Aquí está el resultado:
None
no está haciendo lo que piensa, significa 'usar el predeterminado'.