以下代码段在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()将显示外部窗口,但会阻止执行直到窗口关闭。
提前致谢。
答案 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 中的中断内核(又名停止)按钮时,异常情况会关闭图形的窗口。