How to reuse plot in next jupyter cell [duplicate]

馋奶兔 提交于 2019-12-08 19:53:13

问题


I have a jupyter notebook and wish to create a plot in one cell, then write some markdown to explain it in the next, then set the limits and plot again in the next. This is my code so far:

# %%
%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);

The start of each cell is marked # %% above. The third cell shows an empty figure.

I'm aware of plt.subplots(2) to plot 2 plots from one cell but this does not let me have markdown between the plots.

Thanks in advance for any help.


回答1:


This answer to a similar question says you can reuse your axes and figure from a previous cell. It seems that if you just have figure as the last element in the cell it will re-display its graph:

# %%
%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.



回答2:


Easiest thing I can think of is to extract the plotting into a function that you can call twice. On the 2nd call you can then also call plt.xlim to zoom in. So something like (using you %% notation for new cells):

# %%
%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)


来源:https://stackoverflow.com/questions/41537457/how-to-reuse-plot-in-next-jupyter-cell

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!