Necesito agregar dos subtramas a una figura. Una subtrama necesita ser aproximadamente tres veces más ancha que la segunda (misma altura). Lo logré usando GridSpec
y el argumento colspan
, pero me gustaría hacer esto usando figure
para poder guardarlo en PDF. Puedo ajustar la primera figura usando el argumento figsize
en el constructor, pero ¿cómo puedo cambiar el tamaño del segundo gráfico?Subtramas de tamaño diferente de Matplotlib
Respuesta
Puede utilizar gridspec
y figure
:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import gridspec
# generate some data
x = np.arange(0, 10, 0.2)
y = np.sin(x)
# plot it
fig = plt.figure(figsize=(8, 6))
gs = gridspec.GridSpec(1, 2, width_ratios=[3, 1])
ax0 = plt.subplot(gs[0])
ax0.plot(x, y)
ax1 = plt.subplot(gs[1])
ax1.plot(y, x)
plt.tight_layout()
plt.savefig('grid_figure.pdf')
que utilizan pyplot
's axes
objeto de ajustar manualmente los tamaños sin necesidad de utilizar GridSpec
:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.2)
y = np.sin(x)
# definitions for the axes
left, width = 0.07, 0.65
bottom, height = 0.1, .8
bottom_h = left_h = left+width+0.02
rect_cones = [left, bottom, width, height]
rect_box = [left_h, bottom, 0.17, height]
fig = plt.figure()
cones = plt.axes(rect_cones)
box = plt.axes(rect_box)
cones.plot(x, y)
box.plot(y, x)
plt.show()
Probablemente la forma más sencilla está usando subplot2grid
, descrito i n Customizing Location of Subplot Using GridSpec.
ax = plt.subplot2grid((2, 2), (0, 0))
es igual a
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(2, 2)
ax = plt.subplot(gs[0, 0])
así el ejemplo de BMU se convierte en:
import numpy as np
import matplotlib.pyplot as plt
# generate some data
x = np.arange(0, 10, 0.2)
y = np.sin(x)
# plot it
fig = plt.figure(figsize=(8, 6))
ax0 = plt.subplot2grid((1, 3), (0, 0), colspan=2)
ax0.plot(x, y)
ax1 = plt.subplot2grid((1, 3), (0, 2))
ax1.plot(y, x)
plt.tight_layout()
plt.savefig('grid_figure.pdf')
Otra forma es utilizar la función de subplots
y pasar la relación de anchura con gridspec_kw
:
import numpy as np
import matplotlib.pyplot as plt
# generate some data
x = np.arange(0, 10, 0.2)
y = np.sin(x)
# plot it
f, (a0, a1) = plt.subplots(1,2, gridspec_kw = {'width_ratios':[3, 1]})
a0.plot(x,y)
a1.plot(y,x)
f.tight_layout()
f.savefig('grid_figure.pdf')
En realidad, me gusta más esta opción, me alegro de haber desplazado hasta el fondo :) – astrojuanlu
Gracias por esto; la forma de hacer 'plt.subplots' es mucho más limpia. –
Me gustan las subtramas mejor que gridspec ya que ya no tiene que ocuparse de las configuraciones de la lista para el eje (con gridspec todavía necesita hacer el eje y las representaciones una a una). Entonces las subtramas son más limpias y más rápidas de usar –
- 1. Mejore el tamaño/espaciado de las subtramas con muchas subtramas en matplotlib
- 2. Título común a muchas subtramas en Matplotlib
- 3. matplotlib - subtramas con relación de aspecto fija
- 4. más de 9 subtramas en matplotlib
- 5. ajuste de alturas de subtramas individuales en matplotlib en Python
- 6. Matplotlib: Reposicionando una subparcela en una grilla de subtramas
- 7. matplotlib - Global leyenda y el título de lado subtramas
- 8. dibujar un borde alrededor de las subtramas en matplotlib
- 9. cómo hacer subtramas cuadradas en matplotlib con heatmaps?
- 10. ¿cómo hago una sola leyenda para muchas subtramas con matplotlib?
- 11. Tamaño de texto diferente para hardware diferente
- 12. MATLAB - ¿Cómo acercar las subtramas?
- 13. Creación de subtramas cuadrados (de igual altura y anchura) en matplotlib
- 14. ¿Cómo establecer el ciclo de color predeterminado para todas las subtramas con matplotlib?
- 15. Subtramas con fechas en el eje x
- 16. Dibujar línea entre dos subtramas
- 17. Tamaño del contenedor en Matplotlib (Histograma)
- 18. Cambiar el tamaño de una figura automáticamente en matplotlib
- 19. Matplotlib make tick labels tamaño de fuente más pequeño
- 20. Cómo cambiar el tamaño de fuente en un diagrama matplotlib
- 21. Python/Matplotlib - Cambiar el tamaño relativo de una trama secundaria
- 22. ¿Disposición de memoria de unión de miembro de diferente tamaño?
- 23. Tamaño del texto con diferente resolución
- 24. MPI_Recv: Recibo un tamaño diferente al enviado
- 25. Medida de distancia entre dos conjuntos de tamaño posiblemente diferente
- 26. Conseguir diferente tamaño de la cabecera, cambiando el tamaño de ventana
- 27. Tamaño de elemento diferente en una cuadrícula agrupadaVer
- 28. ¿Cómo establecer los márgenes para una figura de matplotlib?
- 29. coloca automáticamente el cuadro de texto en matplotlib
- 30. Ajuste de color diferente para cada serie en el gráfico de dispersión en matplotlib
Gridspec funciona con una figura normal. – tillsten