Estoy aprendiendo a usar matplotlib
al estudiar ejemplos, y muchos ejemplos parecen incluir una línea como la siguiente antes de crear una sola trama ...
fig, ax = plt.subplots()
Aquí hay unos ejemplos...
- Modificar texto de etiqueta de marca
- http://matplotlib.org/examples/pylab_examples/boxplot_demo2.html
Veo que esta función se usa mucho, a pesar de que el ejemplo solo intenta crear un solo gráfico. ¿Hay alguna otra ventaja? La demostración oficial de subplots()
también se usa f, ax = subplots
al crear un solo gráfico, y solo hace referencia a axe 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')
python
matplotlib
plot
visualization
neelshiv
fuente
fuente
Respuestas:
plt.subplots()
es una función que devuelve una tupla que contiene una figura y eje (s) objeto (s). Por lo tanto, al usarfig, ax = plt.subplots()
, descomprime esta tupla en las variablesfig
yax
. Tenerfig
es útil si desea cambiar los atributos de nivel de figura o guardar la figura como un archivo de imagen más tarde (por ejemplo, config.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 los ejes (los objetos que tienen métodos de trazado) tienen un objeto de figura principal de todos modos, por lo tanto:es más conciso que esto:
fuente
ax11, ax12, ax21, ax22
usandofig.add_subplot(221)
(o 222, 223, 224 respectivamente).Solo un suplemento aquí.
La siguiente pregunta es: ¿qué sucede si quiero más subtramas en la figura?
Como se menciona en el Doc, podemos usar
fig = plt.subplots(nrows=2, ncols=2)
para establecer un grupo de subtramas con cuadrícula (2,2) en un objeto de figura.Entonces, como sabemos, el
fig, ax = plt.subplots()
resultado es una tupla, intentemosfig, ax1, ax2, ax3, ax4 = plt.subplots(nrows=2, ncols=2)
primero.Provoca un error, pero no te preocupes, porque ahora vemos que
plt.subplots()
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.Entonces intentemos esto de nuevo:
y verifique el tipo:
Por supuesto, si usa parámetros como (nrows = 1, ncols = 4), entonces el formato debe ser:
Así que solo recuerde mantener la construcción de la lista igual que la cuadrícula de subtramas que establecemos en la figura.
Espero que esto sea útil para ti.
fuente
fig, axes = plt.subplots(nrows=10, ncols=3)
yaxes = axes.flatten()
. Ahora se puede hacer referencia a cada subtrama por su índice:axes[0]
,axes[1]
, ...nrows=1
, como entonces,axes
se devuelve plano con una longitud igual ancols
fig, axes = plt.subplots(nrows=1, ncols=3, squeeze=False)
Como complemento de la pregunta y las respuestas anteriores, también hay una diferencia importante entre
plt.subplots()
yplt.subplot()
, observe 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 del eje) de las subtramas como una tupla. Una figura puede entenderse como un lienzo donde pintas tu boceto.Mientras que, puede usar
plt.subplot()
si desea agregar las subtramas por separado. Solo devuelve el eje de una subtrama.Sin embargo,
plt.subplots()
se prefiere porque le brinda opciones más fáciles de personalizar directamente su figura completamientras que, con
plt.subplot()
, habrá que especificar individualmente para cada eje que puede volverse engorroso.fuente
ax3 = plt.subplot(2,1,3)
no funcionará porque es 2 por 1, que tiene solo 2 gráficos.Además de las respuestas anteriores, puede verificar el tipo de objeto
type(plt.subplots())
que usa que devuelve una tupla, por otro lado,type(plt.subplot())
devuelve elmatplotlib.axes._subplots.AxesSubplot
que no puede desempaquetar.fuente