Subgráficos
La función subplots()
de pyplot
cumple este propósito específico. Se utilizó anteriormente para crear un lienzo en la primera sección, y ahora se examinará con mayor detalle.
Filas y columnas
Los argumentos más importantes de esta función son nrows
y ncolumns
, que establecen el número de filas y columnas en la cuadrícula de subgráficos. Por defecto, ambos son 1, por lo que se obtiene un solo gráfico (Axes
).
La función subplots()
devuelve un objeto Figure
y bien un objeto Axes
o una matriz de objetos Axes
, dependiendo del tamaño de la cuadrícula.
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
Se creó una cuadrícula de subgráficos de 2 por 2.
Dado que hay varios subgráficos, subplots
devuelve un arreglo de objetos Axes
, que normalmente se almacena en una variable llamada axs
(el singular ax
se utiliza para un solo gráfico).
En este caso, axs
es un arreglo bidimensional, por lo que se necesita tanto un índice de fila como de columna para acceder a un subgráfico específico.
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Creating a 2x2 subplot grid fig, axs = plt.subplots(2, 2) # Creating a different plot for each Axes object axs[0, 0].plot(data_linear) axs[0, 1].plot(data_squared) axs[1, 0].scatter(data_linear, data_linear) axs[1, 1].scatter(data_linear, data_squared) plt.show()
La primera fila (fila 0) contiene dos gráficos de líneas, y la segunda fila (fila 1) contiene dos diagramas de dispersión.
Dado que cada gráfico se coloca en un subgráfico separado, no se puede utilizar directamente plt.plot()
o plt.scatter()
. El enfoque adecuado es llamar al método correspondiente en cada objeto individual Axes
.
Conversión a un arreglo 1D
También es posible utilizar el método .ravel()
para convertir un arreglo 2D de Axes
en un arreglo aplanado contiguo 1D:
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Creating a 2x2 subplot grid fig, axs = plt.subplots(2, 2) # Flattening axs to a 1D array for easier indexing axs = axs.ravel() # Creating a different plot for each Axes object axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
Con una matriz de 2x2, axs.ravel()
la convierte en un arreglo unidimensional que contiene cuatro elementos.
Compartir un eje
La función subplots()
también tiene los parámetros sharex
y sharey
. Estos controlan si los ejes x o y se comparten entre los subgráficos. Ambos están configurados en False
por defecto.
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Create a 2x2 subplot grid with shared x-axis across all subplots fig, axs = plt.subplots(2, 2, sharex=True) # Flatten axs array for easier indexing axs = axs.ravel() # Plotting different data on each subplot axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
Configurar sharex=True
comparte el eje x entre todos los subgráficos, lo cual es útil aquí porque todos los subgráficos utilizan los mismos valores en el eje x.
También es posible establecer sharex
o sharey
en 'row'
para compartir el eje dentro de cada fila de subgráficos, o en 'col'
para compartirlo dentro de cada columna de subgráficos.
Como siempre, siéntete libre de explorar más en la
subplots()
documentation en caso de que lo desees.
Swipe to start coding
- Utilizar la función correcta para crear una cuadrícula de subgráficos.
- La cuadrícula debe tener 3 filas y 1 columna (especificar los dos primeros parámetros).
- Especificar el argumento de palabra clave más a la derecha, para que el eje x se comparta entre todos los subgráficos.
- Almacenar el resultado de la función para crear subgráficos en las variables
fig
yaxs
(de izquierda a derecha). - Colocar el primer gráfico de líneas para
data_linear
en la primera fila (fila0
) de la cuadrícula de subgráficos. - Colocar el segundo gráfico de líneas para
data_squared
en la segunda fila (fila1
) de la cuadrícula de subgráficos. - Colocar el tercer gráfico de líneas para
data_exp
en la tercera fila (fila2
) de la cuadrícula de subgráficos.
Solución
¡Gracias por tus comentarios!