how - subplot title python
comprender matplotlib.subplots python (1)
Los diferentes tipos de retorno se deben al argumento de la palabra clave
squeeze
a
plt.subplots()
que se establece en
True
de forma predeterminada.
Mejoremos la documentación con los respectivos desempaques:
apretar: bool, opcional, predeterminado: verdadero
Si es verdadero, las dimensiones adicionales se extraen del objeto Axes devuelto:
- si solo se construye una subtrama (nrows = ncols = 1), el objeto Axes único resultante se devuelve como un escalar.
fig, ax = plt.subplots()
- para subtramas Nx1 o 1xN, el objeto devuelto es una matriz de objetos nudosos 1D de los objetos Axes que se devuelven como matrices 1D numpy.
fig, (ax1, ..., axN) = plt.subplots(nrows=N, ncols=1)
(para Nx1)
fig, (ax1, ..., axN) = plt.subplots(nrows=1, ncols=N)
(para 1xN)- para NxM, las subtramas con N> 1 y M> 1 se devuelven como matrices 2D.
fig, ((ax11, .., ax1M),..,(axN1, .., axNM)) = plt.subplots(nrows=N, ncols=M)
- Si es Falso, no se realiza ninguna compresión: el objeto Axes devuelto siempre es una matriz 2D que contiene instancias de Axes, incluso si termina siendo 1x1.
fig, ((ax,),) = plt.subplots(nrows=1, ncols=1, squeeze=False)
fig, ((ax,), .. ,(axN,)) = plt.subplots(nrows=N, ncols=1, squeeze=False)
para Nx1
fig, ((ax, .. ,axN),) = plt.subplots(nrows=1, ncols=N, squeeze=False)
para 1xN
fig, ((ax11, .., ax1M),..,(axN1, .., axNM)) = plt.subplots(nrows=N, ncols=M)
Alternativamente, siempre puede usar la versión desempaquetada
fig, ax_arr = plt.subplots(nrows=N, ncols=M, squeeze=False)
e indexe la matriz para obtener los ejes,
ax_arr[1,2].plot(..)
.
Por lo tanto, para una cuadrícula de 2 x 3 en realidad no importaría si configuras
squeeze
a
False
.
El resultado siempre será una matriz 2D.
Puedes desempacarlo como
fig, ((ax1, ax2, ax3),(ax4, ax5, ax6)) = plt.subplots(nrows=2, ncols=3)
tener
ax{i}
como objetos matplotlib axes, o puede usar la versión empaquetada
fig, ax_arr = plt.subplots(nrows=2, ncols=3)
ax_arr[0,0].plot(..) # plot to first top left axes
ax_arr[1,2].plot(..) # plot to last bottom right axes
Con un poco de ayuda, he construido un conjunto de gráficos circulares. Insertar imagen en el corte de gráfico circular. Mis gráficos se ven maravillosos, ahora necesito colocar los 6 en una figura de 2x3 con marcas de verificación comunes en los ejes X e Y compartidos. Para comenzar, estoy buscando subtramas y pensé que podría hacer que funcione. Descargué algunos ejemplos y comencé a probar algunas cosas.
f, (a) = (plt.subplots(nrows=1, ncols=1, sharex=True, sharey=True))#,
#squeeze=False, subplot_kw=None, gridspec_kw=None))
print(type(f),''/n'',type(a),''/n'')#,type(b))
rendimientos:
clase ''matplotlib.figure.Figure''
clase ''matplotlib.axes._subplots.AxesSubplot''
mientras:
f, (a) = (plt.subplots(nrows=1, ncols=1, sharex=True, sharey=True, squeeze=False, subplot_kw=None, gridspec_kw=None))
print(type(f),''/n'',type(a),''/n'')#,type(b))
devoluciones:
clase ''matplotlib.figure.Figure''
clase ''numpy.ndarray''
Cuando hago esto:
f, (a,b) = (plt.subplots(nrows=2, ncols=1, sharex=True, sharey=True, squeeze=False, subplot_kw=None, gridspec_kw=None))
print(type(f),''/n'',type(a),''/n'',type(b))
Obtengo resultados similares, sin embargo, si nrows = 1 y ncols = 2 obtengo un error:
f, (a,b) = (plt.subplots(nrows=1, ncols=2, sharex=True, sharey=True, squeeze=False, subplot_kw=None, gridspec_kw=None))
print(type(f),''/n'',type(a),''/n'',type(b))
ValueError: valores insuficientes para desempaquetar (esperado 2, obtenido 1)
pero de nuevo esto:
f, (a , b) = (
plt.subplots(nrows=1, ncols=2, sharex=True, sharey=True))#,
#squeeze=False, subplot_kw=None, gridspec_kw=None))
print(type(f),''/n'',type(a),''/n'',type(b))
da la clase ''matplotlib.figure.Figure''
clase ''matplotlib.axes._subplots.AxesSubplot''
clase ''matplotlib.axes._subplots.AxesSubplot''
¿Por qué es o matriz o ejes, y también por qué funciona un 2X1 y un 1X2 no? Deseo al cielo poder entender mejor la documentación. Gracias.