bokeh.embed#
提供用于在网页中嵌入 Bokeh 独立内容和服务器内容的函数。
- class RenderRoot(elementid: ~bokeh.core.types.ID, id: ~bokeh.core.types.ID, name: str | None = '', tags: list[~typing.Any] = <factory>)[source]#
封装嵌入 Bokeh 文档根所需的数据。
`name` 或 `tags` 的值是可选的。它们可能用于查询根的集合,以查找要嵌入的特定根。
- elementid: ID#
用于 DOM 元素的唯一 ID
- id: ID#
此根的 Bokeh 模型 ID
- autoload_static(model: Model | Document, resources: Resources, script_path: str) tuple[str, str] [source]#
返回 JavaScript 代码和一个 script 标签,它们可用于嵌入 Bokeh 图表。
图表的数据直接存储在返回的 JavaScript 代码中。
- 参数:
- 返回值:
要保存在 `script_path` 的 JavaScript 代码,以及用于加载它的 `` 标签
- 返回类型:
(js, tag)
- 抛出:
- components(models: Model | Sequence[Model] | dict[str, Model], wrap_script: bool = True, wrap_plot_info: bool = True, theme: None | Theme | type[FromCurdoc] = None) tuple[str, Any] [source]#
返回 HTML 组件以嵌入 Bokeh 图表。图表的数据直接存储在返回的 HTML 中。
示例可以在 examples/embed/embed_multiple.py 中找到
返回的组件假定 BokehJS 资源**已加载**。它们将嵌入在其中的 HTML 文档或模板需要包含 script 标签,可以来自本地 URL 或 Bokeh 的 CDN(将 ``x.y.z`` 替换为您正在使用的 Bokeh 版本)
<script src="https://cdn.bokeh.org/bokeh/release/bokeh-x.y.z.min.js"></script> <script src="https://cdn.bokeh.org/bokeh/release/bokeh-widgets-x.y.z.min.js"></script> <script src="https://cdn.bokeh.org/bokeh/release/bokeh-tables-x.y.z.min.js"></script> <script src="https://cdn.bokeh.org/bokeh/release/bokeh-gl-x.y.z.min.js"></script> <script src="https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-x.y.z.min.js"></script>
始终只需要 Bokeh 核心库 ``bokeh-x.y.z.min.js``。其他脚本是可选的,只有在您想要使用相应功能时才需要包含
如果您正在使用任何Bokeh 组件,则只需要 ``"bokeh-widgets"`` 文件。
如果您正在使用 Bokeh 的数据表格,则只需要 ``"bokeh-tables"`` 文件。
要使用BokehJS API,则需要 ``"bokeh-api"`` 文件,并且必须在核心 BokehJS 库之后加载。
要启用WebGL 支持,则需要 ``"bokeh-gl"`` 文件。
要启用MathJax 支持,则需要 ``"bokeh-mathjax"`` 文件。
- 参数:
models (Model|list|dict|tuple) – 单个 Model、Model 的列表/元组,或键和 Model 的字典。
wrap_script (布尔值, 可选) – 如果为 True,则返回的 javascript 包装在 script 标签中。(默认值:True)
wrap_plot_info (布尔值, 可选) – 如果为 True,则返回 `` 字符串。否则,返回
RenderRoot
对象,这些对象可用于构建您自己的 divs。(默认值:True)theme (Theme, 可选) – 创建组件时应用指定的主题。如果为 None 或未指定,并且提供的模型构成文档的完整根集,则将该文档的主题应用于组件。否则,应用默认主题。
- 返回值:
UTF-8 编码的 (script, div[s]) 或 (raw_script, plot_info[s])
示例
使用默认的包装参数值
components(plot) # => (script, plot_div) components((plot1, plot2)) # => (script, (plot1_div, plot2_div)) components({"Plot 1": plot1, "Plot 2": plot2}) # => (script, {"Plot 1": plot1_div, "Plot 2": plot2_div})
示例
包装参数设置为 False 时
components(plot, wrap_script=False, wrap_plot_info=False) # => (javascript, plot_root) components((plot1, plot2), wrap_script=False, wrap_plot_info=False) # => (javascript, (plot1_root, plot2_root)) components({"Plot 1": plot1, "Plot 2": plot2}, wrap_script=False, wrap_plot_info=False) # => (javascript, {"Plot 1": plot1_root, "Plot 2": plot2_root})
- file_html(models: Model | Document | Sequence[Model], resources: ResourcesLike | None = None, title: str | None = None, *, template: Template | str = <Template 'file.html'>, template_variables: dict[str, Any] = {}, theme: ThemeLike = None, suppress_callback_warning: bool = False, _always_new: bool = False) str [source]#
返回一个 HTML 文档,其中嵌入了 Bokeh Model 或 Document 对象。
图表的数据直接存储在返回的 HTML 中,支持独立自定义 JS/CSS 资源和自定义 jinja2 模板。
- 参数:
models (Model 或 Document 或 seq[Model]) – 要渲染的 Bokeh 对象或对象,通常是 Model 或 Document
resources (ResourcesLike) – Bokeh JS 和 CSS 资源的资源配置。
title (字符串, 可选) –
HTML 文档的标题 `` 标签或 None。(默认值:None)
如果为 None,则尝试从给定的绘图对象中自动查找 Document 标题。
template (Template, 可选) – HTML 文档模板(默认值:FILE)Jinja2 模板,请参阅 bokeh.core.templates.FILE 以获取所需的模板参数
template_variables (字典, 可选) – Jinja2 模板中要使用的变量。如果使用,以下变量名称将被覆盖:title、bokeh_js、bokeh_css、plot_script、plot_div
theme (Theme, 可选) – 将指定的主题应用于创建的 html。如果为 ``None`` 或未指定,并且该函数传递了文档或文档的完整根集,则应用该文档的主题。否则,应用默认主题。
suppress_callback_warning (布尔值, 可选) – 通常,从具有 Python 回调的 Bokeh Document 生成独立 HTML 将导致警告,指出回调无法正常工作。但是,可以通过将此值设置为 True 来抑制此警告(默认值:False)
- 返回值:
UTF-8 编码的 HTML
- json_item(model: Model, target: ID | None = None, theme: ThemeLike = None) StandaloneEmbedJson [source]#
返回一个 JSON 块,该块可用于嵌入独立的 Bokeh 内容。
- 参数:
- 返回值:
类 JSON
此函数返回一个 JSON 块,该块可被 BokehJS 函数 ``Bokeh.embed.embed_item`` 使用。例如,用于 ``/plot`` 的 Flask 端点可能会返回以下内容,以将 Bokeh 绘图嵌入到 id 为 “myplot” 的 div 中
@app.route('/plot') def plot(): p = make_plot('petal_width', 'petal_length') return json.dumps(json_item(p, "myplot"))
然后,网页可以检索此 JSON 并通过调用 ``Bokeh.embed.embed_item`` 嵌入绘图
<script> fetch('/plot') .then(function(response) { return response.json(); }) .then(function(item) { Bokeh.embed.embed_item(item); }) </script>
或者,如果直接在页面源中提供目标 div id 更方便,这也是可能的。如果在对此函数的调用中省略了 target_id
return json.dumps(json_item(p))
然后使用传递给 ``embed_item`` 的值
Bokeh.embed.embed_item(item, "myplot");
- server_document(url: str = 'default', relative_urls: bool = False, resources: Literal['default'] | None = 'default', arguments: dict[str, str] | None = None, headers: dict[str, str] | None = None, with_credentials: bool = False) str [source]#
返回一个 script 标签,该标签嵌入来自 Bokeh 服务器的内容。
使用这些方法嵌入的 Bokeh 应用程序将**不会**设置浏览器窗口标题。
- 参数:
url (字符串, 可选) –
Bokeh 服务器上 Bokeh 应用程序的 URL(默认值:“default”)
如果为 “default”,将使用默认 URL https://127.0.0.1:5006/。
relative_urls (布尔值, 可选) –
是否对资源使用相对 URL。
如果为 True,则为 BokehJS JavaScript 和 CSS 等资源生成的链接将是相对链接。
这通常应设置为 False,但在仅相对 URL 有效的情况下必须设置为 True。 例如,在某些配置下在反向代理后面运行 Bokeh 时
resources –
一个字符串,指定需要与文档一起加载哪些资源。
如果为 default,则将加载默认的 JS/CSS bokeh 文件。
如果为 None,则不会加载任何资源文件。如果您希望通过其他方式(例如,从缓存服务器)提供这些资源文件,这将非常有用。但是请注意,您将单独加载的资源文件应与服务器的版本相同,否则渲染可能无法正常工作。
- 返回值:
一个 `` 标签,它将嵌入来自 Bokeh 服务器的内容。
- server_session(model: Model | None = None, session_id: ID | None = None, url: str = 'default', relative_urls: bool = False, resources: Literal['default'] | None = 'default', headers: dict[str, str] = {}, with_credentials: bool = False) str [source]#
返回一个 script 标签,该标签嵌入来自 Bokeh 服务器上特定现有会话的内容。
此函数通常仅用于从先前使用
bokeh.client
API 创建的特定会话提供服务。使用这些方法嵌入的 Bokeh 应用程序将**不会**设置浏览器窗口标题。
注意
通常,您不希望保存或重用此函数的输出用于不同的或多个页面加载。
- 参数:
model (Model 或 None,可选) –
要从会话渲染的对象,或 None。(默认值:None)
如果为 None,将渲染整个文档。
session_id (str) – 服务器会话 ID
url (字符串, 可选) –
Bokeh 服务器上 Bokeh 应用程序的 URL(默认值:“default”)
如果为 “default”,将使用默认 URL https://127.0.0.1:5006/。
relative_urls (布尔值, 可选) –
是否对资源使用相对 URL。
如果为 True,则为 BokehJS JavaScript 和 CSS 等资源生成的链接将是相对链接。
这通常应设置为 False,但在仅相对 URL 有效的情况下必须设置为 True。 例如,在某些配置下在反向代理后面运行 Bokeh 时
resources –
一个字符串,指定需要与文档一起加载哪些资源。
如果为 default,则将加载默认的 JS/CSS bokeh 文件。
如果为 None,则不会加载任何资源文件。如果您希望通过其他方式(例如,从缓存服务器)提供这些资源文件,这将非常有用。但是请注意,您将单独加载的资源文件应与服务器的版本相同,否则渲染可能无法正常工作。
- 返回值:
一个 `` 标签,它将嵌入来自 Bokeh 服务器的内容。
警告
对每个页面加载重用相同的
session_id
通常不是一个好主意。这可能会导致可扩展性和安全问题,并会导致“共享 Google 文档”行为,这可能不是期望的行为。