Incrustar matplotlib figura en figura más grande

Estoy escribiendo un montón de scripts y funciones para procesar datos astronómicos. Tengo un conjunto de galaxias, para las cuales quiero trazar algunas propiedades diferentes en una plot de 3 paneles. Tengo un ejemplo del diseño aquí:

introduzca la descripción de la imagen aquí

Ahora, esto no es un problema. Pero a veces, quiero crear esta ttwig solo para una sola galaxia. En otros casos, quiero hacer una ttwig más grande que consta de subplots en las que cada una está formada por la estructura de tres paneles, como esta maqueta:

introduzca la descripción de la imagen aquí

En aras de la modularidad y la reutilización de mi código, me gustaría hacer algo para que mi función devuelva un objeto matplotlib.figure.Figure y luego permitir que la persona que llama – función o sesión interactiva – decida si desea show() o savefig el objeto o incrustarlo en una figura más grande. Pero parece que no puedo encontrar ningún indicio de esto en la documentación o en otra parte, no parece ser algo que la gente haga a menudo.

¿Alguna sugerencia sobre cuál sería el mejor camino a seguir? He especulado acerca de si usar axes_grid sería la solución, pero no me parece que esté muy limpio y no sea para el que llama. ¿Alguna sugerencia?

La mejor solución es separar la lógica de diseño de la figura de la lógica de trazado. Escriba su código de trazado algo como esto:

  def three_panel_plot(data, ploting_args, ax1, ax2, ax3): # what you do to plot 

Así que ahora el código que convierte los datos -> imágenes toma como argumentos los datos y donde también debe trazar esos datos.

Si desea hacer solo uno, es fácil, si desea hacer una cuadrícula de 3×3, solo necesita generar el diseño y luego hacer un bucle sobre los conjuntos de ejes + datos.

La forma en que está sugiriendo (devolver un objeto de su rutina de trazado) sería muy difícil en matplotlib, las partes internas están demasiado conectadas.