python - matrices - ¿Cómo obtengo múltiples subtramas en matplotlib?
matplotlib title position (5)
Es posible que le interese el hecho de que a partir de la versión 2.1 de matplotlib, el segundo código de la pregunta también funciona bien.
Desde el registro de cambios :
La clase Figura ahora tiene un método de subtramas La clase Figura ahora tiene un método subplots () que se comporta igual que pyplot.subplots () pero en una figura existente.
Ejemplo:
import matplotlib.pyplot as plt
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharex=True, sharey=True)
ax1.plot(range(10), ''r'')
ax2.plot(range(10), ''b'')
ax3.plot(range(10), ''g'')
ax4.plot(range(10), ''k'')
plt.show()
Estoy un poco confundido sobre cómo funciona este código:
fig, axes = plt.subplots(nrows=2, ncols=2)
plt.show()
¿Cómo funciona el higo, los ejes en este caso? ¿Qué hace?
Además, ¿por qué esto no funcionaría para hacer lo mismo?
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)
Hay varias formas de hacerlo.
El método de
subplots
crea la figura junto con las subtramas que luego se almacenan en la matriz
ax
.
Por ejemplo:
import matplotlib.pyplot as plt
x = range(10)
y = range(10)
fig, ax = plt.subplots(nrows=2, ncols=2)
for row in ax:
for col in row:
col.plot(x, y)
plt.show()
Sin embargo, algo como esto también funcionará, aunque no es tan "limpio" ya que está creando una figura con subtramas y luego agrega encima de ellas:
fig = plt.figure()
plt.subplot(2, 2, 1)
plt.plot(x, y)
plt.subplot(2, 2, 2)
plt.plot(x, y)
plt.subplot(2, 2, 3)
plt.plot(x, y)
plt.subplot(2, 2, 4)
plt.plot(x, y)
plt.show()
lea la documentación: matplotlib.pyplot.subplots
pyplot.subplots()
devuelve una tupla
fig, ax
que se desempaqueta en dos variables usando la notación
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)
el código
import matplotlib.pyplot as plt
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)
plt.show()
no funciona porque
subplots()
es una función en
pyplot
no un miembro del objeto
Figure
.