为什么 BokehJS 不显示在 GitHub 上呈现的 Jupyter/IPython 笔记本中?

Why doesn't BokehJS show in a rendered Jupyter/IPython notebook on GitHub?

我在 Jupyter notebook 中有以下代码:

import numpy as np
from bokeh.plotting import figure, show
from bokeh.io import output_notebook
N = 4000
x = np.random.random(size=N) * 100
x = np.random.random(size=N) * 100
radii = np.random.random(size=N) * 1.5
colors = ["#%02x%02x%02x" % (r, g, 150) for r, g in zip(np.floor(50+2*x), np.floor(30+2*y))]
output_notebook()
# Loading BokehJS ...
p = figure()
p.circle(x, y, radius=radii, fill_color=colors, fill_alpha=0.6, line_color=None)
show(p)

但是,它没有显示任何情节或图形;它只是停留在 "Loading BokehJS".

原则上,这应该适用于 nbviewer,因为呈现的笔记本在 GitHub 上被剥离了所有 Javascript(我认为?)。然而,根据我的经验,事实并非如此。

GitHub 在渲染之前从所有 Jupyter notebooks 中清除所有 JavaScript(大概是出于安全原因)。 Bokeh 需要来自客户端库 BokehJS 的 JavaScript 代码才能渲染或执行任何操作。鉴于此,不幸的是,我不希望 Jupyter 笔记本中的 Bokeh 图 曾经 在 GitHub 上工作。

我非常希望它可行,但这完全不在我们的控制范围内。我已经联系 GitHub 要求在回购协议中完全禁用笔记本渲染的选项,理由是 "not rendering at all" 比 "rendering but looking broken" 更可取,但没有收到他们的回复。

请注意,nbviewer 不会 剥离 JavaScript,这就是为什么 Bokeh nbviewer.org gallery 中的所有笔记本都能正常显示的原因。