如何阻止bokeh在Jupyter Notebook中打开新标签页?

时间:2018-07-25 07:13:47

标签: python python-3.x jupyter-notebook bokeh

首先,在将其标记为重复之前,我已经阅读了其他解决方案,但是不幸的是,没有一个对我有用。

我的问题是我想在Juypter Notebook(并且仅在Jupyter Notebook)中显示散景图,而不是在新的标签/窗口中显示。

在官方文档here中,我只需要进行更改

output_file

output_notebook

即使我这样做,即使情节现在已显示为行内,bokeh也不会停止,而且还会打开一个新选项卡并在其中不必要地显示情节。

由于我要在项目中创建很多绘图,因此很高兴不必总是关闭此新选项卡并返回到笔记本,而是让它停止创建新选项卡,就像它能正常工作一样与例如matplotlib。

让我困惑的是,例如,如果我加载official tutorial并在其中输入代码

import numpy as np

x = np.linspace(0, 10, 100)
y = np.exp(x)

p = figure()
p.line(x, y)

show(p)

没有打开新的选项卡。如果现在我在计算机的Juypter Notebook上本地运行相同的代码,它会确实打开一个新标签。

我已经尝试了一段时间以解决此问题,我们将不胜感激。

先谢谢Vincent

3 个答案:

答案 0 :(得分:10)

您需要在笔记本顶部致电output_notebook,但仅 致电output_notebook。如果您完全调用output_file,将激活一种持久模式,该模式将输出保存到文件中,并使show用这些文件打开新的标签页。您需要调用reset_output来清除该持久模式。

为方便起见,由于有几个用户要求使用它,因此如果提供了 no 输出模式,则show的行为就像默认调用output_file一样。未从Binder教程中打开选项卡的原因是,从技术上讲,在Binder服务器上远程运行的代码无法在本地浏览器上打开选项卡(这是一件好事)。

答案 1 :(得分:5)

为@bigreddot的answer添加一个明确的示例:

您可能已经在笔记本中的某个地方运行了bokeh.io.output_file(),以保存值得注意的图形。但是,现在您只想快速尝试一些图来检查数据。

只需重置您的设置即可停止保存到笔记本中任何单元格中的文件,如下所示:

import bokeh.io
# this is here only for completeness to clarify where
# the methods are nested (you probably already imported this earlier)


bokeh.io.reset_output()
bokeh.io.output_notebook()

您可以稍后再激活保存到文件,以保留有趣的图形。

答案 2 :(得分:0)

您可以导入:

from bokeh.plotting import output_notebook

并在声明output_notebook之前调用figure,然后使用show显示该图形。参见doc