散景未显示在 jupyter 笔记本中

问题描述 投票:0回答:3

我无法在 Jupyter Notebook 中绘制最基本的散景图。我进行了搜索,发现这是一年多前报告的问题,但此后就没有了 - 对于其他人来说这仍然是一个问题吗?

from bokeh.io import output_notebook, show
from bokeh.plotting import figure

output_notebook()

p = figure(plot_width=400, plot_height=400)

p.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=15, line_color="navy", 
fill_color="orange", fill_alpha=0.5)

show(p)

我收到“BokehJS 0.12.10 已成功加载”。消息,但不是情节。请注意,它可以正常输出 html 文件。

我尝试使用以下方法更改环境变量:

import os
os.environ['BOKEH_RESOURCES'] = 'inline'

但这也没有效果。这是一个令人沮丧的下午,因此我们将不胜感激!

jupyter-notebook bokeh
3个回答
14
投票

运行下面的行对我有用

from bokeh.resources import INLINE
import bokeh.io
from bokeh import *
bokeh.io.output_notebook(INLINE)

2
投票

我的猜测是你的笔记本版本太旧了。根本没有技术途径可以同时支持新的 JupyterLab 和 5.0 之前的经典笔记本版本。支持 JupyterLab 势在必行,因此截至目前,Bokeh 只能支持经典笔记本 5.0 及更高版本。所以,你可以:

  • 降级散景 (<= 0.12.8), or

  • 升级 Jupyter Notebook (>= 5.0),或

  • 切换到最新的 JupyterLab 测试版。您需要安装 Jupyter 扩展

      jupyter labextension install jupyterlab_bokeh
    

0
投票

实际上这是有记录的: https://docs.bokeh.org/en/2.4.2/docs/user_guide/jupyter.html

import itertools

import numpy as np

from bokeh.models import ColumnDataSource
from bokeh.plotting import figure
from bokeh.io import push_notebook, show, output_notebook
output_notebook()

TOOLS = "crosshair,pan,wheel_zoom,box_zoom,reset,hover,save"

TOOLTIPS = [
    ("index", "$index"),
    ("(x, y)", "($x, $y)"),
    ("radius", "@radius"),
    ("fill color", "$color[hex, swatch]:colors"),
    ("foo", "@foo"),
    ("bar", "@bar"),
]

N = 26 * 26
x, y = np.mgrid[0:101:4, 0:101:4].reshape((2, N))

source = ColumnDataSource(data=dict(
    x=x,
    y=y,
    radius=np.random.random(N) * 0.4 + 1.7,
    colors=np.array([(r, g, 150) for r, g in zip(50+2*x, 30+2*y)], dtype="uint8"),
    foo=list(itertools.permutations("abcdef"))[:N],
    bar=np.random.normal(size=N),
    text=[str(i) for i in np.arange(N)],
))

p = figure(title="Hoverful Scatter", tools=TOOLS, tooltips=TOOLTIPS)

r = p.circle("x", "y", radius="radius", source=source,
             fill_color="colors", fill_alpha=0.6, line_color=None)
p.hover.renderers = [r] # hover only for circles

p.text("x", "y", text="text", source=source, alpha=0.5,
       text_font_size="7px", text_baseline="middle", text_align="center")

show(p, notebook_handle=True)
© www.soinside.com 2019 - 2024. All rights reserved.