Bokeh - 嵌入图表和应用



图表和数据可以以独立文档以及 Bokeh 应用程序的形式嵌入到 HTML 文档中。

独立文档是未由 Bokeh 服务器支持的 Bokeh 图表或文档。此类图表中的交互纯粹是自定义 JS 的形式,而不是纯 Python 回调。

由 Bokeh 服务器支持的 Bokeh 图表和文档也可以嵌入。此类文档包含在服务器上运行的 Python 回调。

对于独立文档,可以通过 `file_html()` 函数获得表示 Bokeh 图表的原始 HTML 代码。

from bokeh.plotting import figure
from bokeh.resources import CDN
from bokeh.embed import file_html
fig = figure()
fig.line([1,2,3,4,5], [3,4,5,2,3])
string = file_html(plot, CDN, "my plot")

`file_html()` 函数的返回值可以保存为 HTML 文件,也可以用于在 Flask 应用程序中通过 URL 路由进行渲染。

对于独立文档,可以通过 `json_item()` 函数获得其 JSON 表示。

from bokeh.plotting import figure
from bokeh.embed import file_html
import json
fig = figure()
fig.line([1,2,3,4,5], [3,4,5,2,3])
item_text = json.dumps(json_item(fig, "myplot"))

此输出可由网页上的 Bokeh.embed.embed_item 函数使用:

item = JSON.parse(item_text);
Bokeh.embed.embed_item(item);

Bokeh 服务器上的 Bokeh 应用程序也可以嵌入,以便在每次页面加载时创建新的会话和文档,以便加载特定的现有会话。这可以通过 `server_document()` 函数实现。它接受 Bokeh 服务器应用程序的 URL,并返回一个脚本,该脚本将在每次执行脚本时嵌入来自该服务器的新会话。

`server_document()` 函数接受 URL 参数。如果将其设置为“default”,则将使用默认 URL https://127.0.0.1:5006/。

from bokeh.embed import server_document
script = server_document("https://127.0.0.1:5006/sliders")

`server_document()` 函数返回如下脚本标签:

<script
   src="https://127.0.0.1:5006/sliders/autoload.js?bokeh-autoload-element=1000&bokeh-app-path=/sliders&bokeh-absolute-url=https://127.0.0.1:5006/sliders"
   id="1000">
</script>
广告