Saltar al contenido

¿Por qué muchos ejemplos usan `fig, ax = plt.subplots ()` en Matplotlib / pyplot / python

Solución:

plt.subplots() es una función que devuelve una tupla que contiene una figura y objeto (s) de ejes. Por lo tanto, al usar fig, ax = plt.subplots() descomprime esta tupla en las variables fig y ax. Teniendo fig es útil si desea cambiar los atributos a nivel de figura o guardar la figura como un archivo de imagen más tarde (por ejemplo, con fig.savefig('yourfilename.png')). Ciertamente no tiene que usar el objeto de figura devuelto, pero muchas personas lo usan más tarde, por lo que es común verlo. Además, todos los objetos de ejes (los objetos que tienen métodos de trazado), tienen un objeto de figura principal de todos modos, así:

fig, ax = plt.subplots()

es más conciso que esto:

fig = plt.figure()
ax = fig.add_subplot(111)

Solo un suplemento aquí.

La siguiente pregunta es: ¿qué pasa si quiero más subtramas en la figura?

Como se menciona en el documento, podemos usar fig = plt.subplots(nrows=2, ncols=2) para establecer un grupo de subparcelas con cuadrícula (2,2) en un objeto de figura.

Entonces, como sabemos, el fig, ax = plt.subplots() devuelve una tupla, intentemos fig, ax1, ax2, ax3, ax4 = plt.subplots(nrows=2, ncols=2) primeramente.

ValueError: not enough values to unpack (expected 4, got 2)

Genera un error, pero no te preocupes, porque ahora vemos que plt.subplots() en realidad, devuelve una tupla con dos elementos. El primero debe ser un objeto de figura y el otro debe ser un grupo de objetos de subtramas.

Intentemos esto de nuevo:

fig, [[ax1, ax2], [ax3, ax4]] = plt.subplots(nrows=2, ncols=2)

y marque el tipo:

type(fig) #<class 'matplotlib.figure.Figure'>
type(ax1) #<class 'matplotlib.axes._subplots.AxesSubplot'>

Por supuesto, si usa parámetros como (nrows = 1, ncols = 4), entonces el formato debería ser:

fig, [ax1, ax2, ax3, ax4] = plt.subplots(nrows=1, ncols=4)

Así que recuerde mantener la construcción de la lista igual que la cuadrícula de subparcelas que establecemos en la figura.

Espero que esto sea útil para ti.

Como complemento a la pregunta y las respuestas anteriores, también hay una diferencia importante entre plt.subplots() y plt.subplot(), note la falta 's' al final.

Uno puede usar plt.subplots() para hacer todas sus subtramas a la vez y devuelve la figura y los ejes (plural de ejes) de las subtramas como una tupla. Una figura puede entenderse como un lienzo donde pintas tu boceto.

# create a subplot with 2 rows and 1 columns
fig, ax = plt.subplots(2,1)

Considerando que, puede utilizar plt.subplot() si desea agregar las subtramas por separado. Devuelve solo el eje de una subparcela.

fig = plt.figure() # create the canvas for plotting
ax1 = plt.subplot(2,1,1) 
# (2,1,1) indicates total number of rows, columns, and figure number respectively
ax2 = plt.subplot(2,1,2)

Sin embargo, plt.subplots() es preferido porque le brinda opciones más fáciles para personalizar directamente toda su figura

# for example, sharing x-axis, y-axis for all subplots can be specified at once
fig, ax = plt.subplots(2,2, sharex=True, sharey=True)

Ejes compartidos


mientras que, con plt.subplot(), habrá que especificar individualmente para cada eje lo que puede resultar engorroso.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *