交互式matplotlib绘制在jupyter笔记本中

时间:2016-09-10 16:46:11

标签: matplotlib ipython jupyter jupyter-notebook

以下代码段在ipython控制台中按预期工作:

> anaconda3/bin/ipython3
In [1]: import matplotlib.pyplot as plt
        import pandas as pd
        import numpy as np
In [2]: plt.ion()
In [3]: pd.Series(np.sin(np.arange(0, 10, 0.1))).plot() # plot window appears
In [4]: pd.Series(np.cos(np.arange(0, 10, 0.1))).plot() # second line is drawn in the same window

终端没有被阻挡。如何在Jupyter笔记本中获得相同的行为?也就是说,可以从笔记本中逐步绘制一个外部交互式绘图窗口。

相同的代码段显示笔记本中没有图表。执行plt.show()将显示外部窗口,但会阻止执行直到窗口关闭。

提前致谢。

3 个答案:

答案 0 :(得分:7)

即使不需要后端开关,笔记本电脑也需要%matplotlib magic,之后笔记本电脑的行为与控制台相同。例如,将其作为笔记本中的第一个单元格执行:

%matplotlib
import matplotlib.pyplot as plt
plt.ion()

答案 1 :(得分:0)

魔术命令%matplotlib使jupyter笔记本使用Qt5Agg交互式后端。

答案 2 :(得分:0)

要使用交互式后端模拟对 plt.show() 的阻塞调用,您需要等到人物处于活动状态。

# provided interactive backend
# e.g. %matplotlib qt5
fig = plt.figure()

plt.show()

try:
    while fig.number in plt.get_fignums():
        plt.pause(0.1)
except:
    plt.close(fig.number)
    raise

当用户按下 Jupyter Notebook 中的中断内核(又名停止)按钮时,异常情况会关闭图形的窗口。

相关问题