好吧,我知道我可以%matplotlib inline用来绘制内联。
但是,如何禁用它?
有时我只想放大我绘制的图形。这是我不能在内联图上做的。
我正在查看matplotlib python inline on / off,这种解决方法可以解决问题,但是当我执行plt.ion()所有操作时,所有图都会弹出(上百个图)。我想将它们抑制在一个单元格中。有没有with可以用来关闭的循环,%matplotlib inline或者这是不可能的吗?
我已经使用 Jupyter notebook 和 matplotlib 几个星期了,没有任何问题。我在笔记本单元格的开头使用了以下代码将 matplotlib 绘图放入外部窗口:
%matplotlib notebook
Run Code Online (Sandbox Code Playgroud)
但是,今天当我运行这些单元格时,它会在我的代码之后在单元格末尾的同一窗口中绘制图形。它将交互式选项放入该图中,因此请注意与使用%matplotlib inline.
我需要在外部窗口中绘制这些数字,而不是在同一个窗口中,所以我该怎么做才能解决这个问题?我尝试重新启动内核并重新启动我的 PC 并重新启动 Jupyter 笔记本,但都没有奏效。
那么有谁知道我如何像以前那样在外部窗口中制作 Jupyter notebook 绘图 matplotlib 图形?
编辑:我也尝试过使用其他 matplotlib 后端(qt、tk 等),但它们没有任何区别,它仍然将绘图放在单元格的末尾而不是在外部窗口中。我在下面的单元格末尾包含了一张图的图片。
关于如何创建 1 X 2 HTML 表,其中单元格 {0} 是 matplotlib 图,单元格 {1} 是 Python 3.X 的文本描述,有什么想法吗?
import matplotlib.pyplot as plt
from io import BytesIO
%matplotlib inline
def add_split_screen(fig, text, iwidth=None):
figdata = BytesIO()
fig.savefig(figdata, format='png')
figdata.seek(0)
figdata
figdata.close()
iwidth = ' width={0} '.format(iwidth) if iwidth is not None else ''
datatable = '<table><tr><td>{0}</td><td>{1}</td></tr></table>'.format(figdata, text)
display(HTML(datatable))
Run Code Online (Sandbox Code Playgroud)
设置测试用例:
fig, ax = plt.subplots(1,1, figsize=(6,4))
ax.plot([1,2,3])
text = '<h4>Special Chart:</h4><BR>Description of chart will go here.'
Run Code Online (Sandbox Code Playgroud)
然后在 Jupyter 笔记本中运行该函数:
add_split_screen(fig, text, iwidth='500px')
Run Code Online (Sandbox Code Playgroud)
然而,我有兴趣在 Jupyter 笔记本中实际看到该情节。