La respuesta de las3rjock , que de alguna manera es la respuesta aceptada por el OP, es incorrecta: el código no se ejecuta, ni es una sintaxis matplotlib válida; esa respuesta no proporciona ningún código ejecutable y carece de información o sugerencia que el OP pueda encontrar útil para escribir su propio código para resolver el problema en el OP.
Dado que es la respuesta aceptada y ya ha recibido varios votos a favor, supongo que es necesaria una pequeña deconstrucción.
Primero, llamar a subtrama no le da múltiples parcelas; La subparcela se llama para crear una sola parcela, así como para crear varias parcelas. Además, "cambiar plt.figure (i)" no es correcto.
plt.figure () (en el que plt o PLT suele ser la biblioteca pyplot de matplotlib importada y recuperada como una variable global, plt o, a veces, PLT, así:
from matplotlib import pyplot as PLT
fig = PLT.figure()
la línea justo arriba crea una instancia de figura matplotlib; Luego, se llama al método add_subplot de este objeto para cada ventana de trazado (piense informalmente en un eje x e y que comprenda una sola subparcela). Usted crea (ya sea solo uno o para varios en una página), así
fig.add_subplot(111)
esta sintaxis es equivalente a
fig.add_subplot(1,1,1)
elija el que tenga sentido para usted.
A continuación, he enumerado el código para trazar dos gráficos en una página, uno encima del otro. El formateo se realiza mediante el argumento pasado a add_subplot . Observe que el argumento es ( 211 ) para la primera gráfica y ( 212 ) para la segunda.
from matplotlib import pyplot as PLT
fig = PLT.figure()
ax1 = fig.add_subplot(211)
ax1.plot([(1, 2), (3, 4)], [(4, 3), (2, 3)])
ax2 = fig.add_subplot(212)
ax2.plot([(7, 2), (5, 3)], [(1, 6), (9, 5)])
PLT.show()
Cada uno de estos dos argumentos es una especificación completa para colocar correctamente las respectivas ventanas de gráficos en la página.
211 (que, de nuevo, también podría escribirse en forma de 3 tuplas como (2,1,1) significa dos filas y una columna de ventanas de la gráfica; el tercer dígito especifica el orden de esa ventana de la subparcela en particular en relación con las otras ventanas de la subparcela- -en este caso, este es el primer gráfico (que lo coloca en la fila 1), por lo tanto, el número de gráfico 1, fila 1 col 1.
El argumento pasado a la segunda llamada a add_subplot , difiere del primero solo por el dígito final (un 2 en lugar de un 1, porque este gráfico es el segundo gráfico (fila 2, columna 1).
Un ejemplo con más gráficos: si en cambio quisiera cuatro gráficos en una página, en una configuración de matriz de 2x2, llamaría al método add_subplot cuatro veces, pasando estos cuatro argumentos (221), (222), (223) y ( 224), para crear cuatro gráficos en una página a las 10, 2, 8 y 4 en punto, respectivamente y en este orden.
Observe que cada uno de los cuatro argumentos contiene dos encabezamientos 2, que codifican la configuración 2 x 2, es decir, dos filas y dos columnas.
El tercer dígito (más a la derecha) en cada uno de los cuatro argumentos codifica el orden de esa ventana de gráfico en particular en la matriz 2 x 2, es decir, fila 1 columna 1 (1), fila 1 columna 2 (2), fila 2 columna 1 (3), fila 2 columna 2 (4).
fig.add_axes(rect)
lugar deadd_subplot
?PLT
? Nunca había visto que se usara antesfor i in range(16): plt.subplot(4, 4, i+1)
y no observar ningún error de sintaxis. La respuesta es aceptada porque probablemente hizo lo que quería el OP.Dado que esta pregunta es de hace 4 años se han implementado cosas nuevas y entre ellas hay una nueva función
plt.subplots
que es muy conveniente :fig, axes = plot.subplots(nrows=2, ncols=3, sharex=True, sharey=True)
where
axes
es unonumpy.ndarray
de los objetos AxesSubplot, lo que hace que sea muy conveniente pasar por las diferentes subtramas simplemente usando índices de matriz[i,j]
.fuente
Esto también funciona:
for i in range(19): plt.subplot(5,4,i+1)
Traza 19 gráficos en total en una página. El formato es 5 hacia abajo y 4 a lo ancho.
fuente
La respuesta de @doug & FS. son muy buenas soluciones. Quiero compartir la solución para la iteración en pandas.dataframe.
import pandas as pd df=pd.DataFrame([[1, 2], [3, 4], [4, 3], [2, 3]]) fig = plt.figure(figsize=(14,8)) for i in df.columns: ax=plt.subplot(2,1,i+1) df[[i]].plot(ax=ax) print(i) plt.show()
fuente
for i,col in enumerate(df.columns):