Matplotlib图未显示在Jupyter笔记本第一个单元格的输出小部件中

Art*_*rim 7 matplotlib jupyter-notebook

我在Jupyter笔记本的第一个单元格中有以下代码段:

import matplotlib.pyplot as plt
import pandas as pd
import ipywidgets as widgets
import numpy as np

out = widgets.Output()
data = pd.DataFrame(np.random.normal(size = 50))
plt.ioff()
with out:
    fig, axes = plt.subplots()
    data.hist(ax = axes)
    display(fig)
plt.ion()    
display(out)
Run Code Online (Sandbox Code Playgroud)

如果重新启动内核并运行第一个单元,则会看到以下输出:

<Figure size 640x480 with 1 Axes>
Run Code Online (Sandbox Code Playgroud)

但是,如果我第二次运行此第一个单元格,则会看到预期的matplotlib图。如果在将matplotlib导入后将所有内容移动到第二个单元格,重新启动内核,然后重新运行整个笔记本,也会显示此行为。

这种行为上的差异是故意的吗?

alz*_*alz 4

代码重新排列和添加魔术命令“%matplotlib笔记本”对我有用。

%matplotlib notebook
import matplotlib.pyplot as plt
import pandas as pd
import ipywidgets as widgets
import numpy as np

out = widgets.Output()

plt.ioff()
fig, axes = plt.subplots()
plt.ion()

data = pd.DataFrame(np.random.normal(size = 50))
data.hist(ax = axes)

display(out)

with out:
    display(fig)
Run Code Online (Sandbox Code Playgroud)