我无法在 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'
但这也没有效果。这是一个令人沮丧的下午,因此我们将不胜感激!
运行下面的行对我有用
from bokeh.resources import INLINE
import bokeh.io
from bokeh import *
bokeh.io.output_notebook(INLINE)
我的猜测是你的笔记本版本太旧了。根本没有技术途径可以同时支持新的 JupyterLab 和 5.0 之前的经典笔记本版本。支持 JupyterLab 势在必行,因此截至目前,Bokeh 只能支持经典笔记本 5.0 及更高版本。所以,你可以:
降级散景 (<= 0.12.8), or
升级 Jupyter Notebook (>= 5.0),或
切换到最新的 JupyterLab 测试版。您需要安装 Jupyter 扩展
jupyter labextension install jupyterlab_bokeh
实际上这是有记录的: 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)