Cómo reutilizar el gráfico en la siguiente celda de jupyter

Tengo un cuaderno de jupyter y deseo crear un gráfico en una celda, luego escribir un punto de reducción para explicarlo en la siguiente, luego establecer los límites y volver a dibujar en la siguiente. Este es mi código hasta ahora:

# %% %matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 2 * np.pi) y = np.sin(x ** 2) plt.plot(x, y); # %% Some markdown text to explain what's going on before we zoom in on the interesting bit # %% plt.xlim(xmax=2); 

El inicio de cada celda está marcado como # %% arriba. La tercera celda muestra una figura vacía.

Estoy al tanto de plt.subplots(2) para trazar 2 plots desde una celda, pero esto no me permite tener una reducción entre las plots.

Gracias de antemano por cualquier ayuda.

Esta respuesta a una pregunta similar dice que puede reutilizar sus axes y figure de una celda anterior. Parece que si solo tienes la figure como el último elemento en la celda, volverá a mostrar su gráfico:

 # %% %matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 2 * np.pi) y = np.sin(x ** 2) fig, ax = plt.subplots() ax.plot(x, y); fig # This will show the plot in this cell, if you want. # %% Some markdown text to explain what's going on before we zoom in on the interesting bit # %% ax.xlim(xmax=2); # By reusing `ax`, we keep editing the same plot. fig # This will show the now-zoomed-in figure in this cell. 

Lo más fácil que se me ocurre es extraer el trazado en una función a la que pueda llamar dos veces. En la segunda llamada, también puedes llamar a plt.xlim para ampliar. Así que algo como (usando tu notación %% para nuevas celdas):

 # %% %matplotlib inline import matplotlib.pyplot as plt import numpy as np # %% def make_plot(): x = np.linspace(0, 2 * np.pi) y = np.sin(x ** 2) plt.plot(x, y); make_plot() # %% Some markdown text to explain what's going on before we zoom in on the interesting bit # %% make_plot() plt.xlim(xmax=2)