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


Estoy aprendiendo a usar matplotlib estudiando ejemplos, y muchos ejemplos parecen incluir una línea como la siguiente antes de crear una sola parcela...

fig, ax = plt.subplots()

Aquí hay algunos ejemplos...

Veo que esta función se usa mucho, a pesar de que el ejemplo solo intenta crear un gráfico único. ¿Hay alguna otra ventaja? El la demo oficial para subplots() también usa f, ax = subplots al crear un gráfico único, y solo hace referencia a ax después de eso. Este es el código que usan.

# Just a figure and one subplot
f, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')
Author: Community, 2015-12-08

2 answers

plt.subplots() es una función que devuelve una tupla que contiene un objeto(s) de figura y ejes. Así, cuando se usa fig, ax = plt.subplots() se descomprime esta tupla en las variables fig y ax. Tener 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 axes (los objetos que tienen métodos de trazado), tienen una figura padre objeto de todos modos, así:

fig, ax = plt.subplots()

Es más conciso que esto:

fig = plt.figure()
ax = fig.add_subplot(111)
 191
Author: jonchar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-08 17:51:25

Solo un suplemento aquí.

La siguiente pregunta es que ¿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 subtramas con grid(2,2) en un objeto figure.

Entonces, como sabemos, el fig, ax = plt.subplots() devuelve una tupla, vamos a intentar fig, ax1, ax2, ax3, ax4 = plt.subplots(nrows=2, ncols=2) en primer lugar.

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

Genera un error, pero no se preocupe, porque ahora vemos que plt.subplots() realmente devuelve una tupla con dos elementos. El 1er debe ser un objeto figura, y el otro debe ser un grupo de objetos subtramas.

Así que vamos a intentarlo de nuevo:

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

Y comprueba 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 debe ser:

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

Así que solo recuerde mantener la construcción de la lista como la misma que la cuadrícula de subtramas que establecemos en la figura.

Espero que esto sea útil para usted.

 25
Author: Duskash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-21 04:29:44