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 文档根所需的数据。

nametags 的值是可选的。它们可能对查询根集合以查找要嵌入的特定根很有用。

elementid: ID#

用于 DOM 元素的唯一 ID

id: ID#

此根的 Bokeh 模型 ID

name: str | None = ''#

此根的可选用户提供的名称

tags: list[Any]#

此根的任何用户提供的标签值的列表

autoload_static(model: Model | Document, resources: Resources, script_path: str) tuple[str, str][source]#

返回 JavaScript 代码和可用于嵌入 Bokeh 图的脚本标签。

图的数据直接存储在返回的 JavaScript 代码中。

参数:
返回值:

要保存在 script_path 的 JavaScript 代码和用于加载它的 <script> 标签

返回类型:

(js, tag)

引发:

ValueError

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]#

返回用于嵌入 Bokeh 图表的 HTML 组件。 图表数据直接存储在返回的 HTML 中。

您可以在 examples/embed/embed_multiple.py 中找到示例。

返回的组件假设 BokehJS 资源已加载。 将它们嵌入其中的 HTML 文档或模板需要包含脚本标签,可以从本地 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) – 单个模型、模型列表/元组或键和模型的字典。

  • wrap_script (布尔值, 可选) – 如果为 True,则返回的 javascript 将包装在脚本标签中。 (默认值: True)

  • wrap_plot_info (布尔值, 可选) – 如果为 True,则返回 <div> 字符串。 否则,返回 RenderRoot 对象,这些对象可用于构建您自己的 div。 (默认值: 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]#

返回一个嵌入 Bokeh Model 或 Document 对象的 HTML 文档。

图表数据直接存储在返回的 HTML 中,支持独立自定义 JS/CSS 资源以及自定义 jinja2 模板。

参数:
  • models (Model or Document or seq[Model]) – 要呈现的 Bokeh 对象,通常是 Model 或 Document。

  • resources (ResourcesLike) – Bokeh JS & CSS 资源的资源配置。

  • title (str, 可选) –

    HTML 文档 <title> 标签的标题,或为 None。 (默认值: None)

    如果为 None,则尝试从给定的绘图对象自动查找文档标题。

  • template (Template, 可选) – HTML 文档模板 (默认值: FILE) Jinja2 模板,有关所需的模板参数,请参见 bokeh.core.templates.FILE。

  • template_variables (dict, 可选) – 要在 Jinja2 模板中使用的变量。 如果使用,则以下变量名将被覆盖:title、bokeh_js、bokeh_css、plot_script、plot_div。

  • theme (Theme, 可选) – 将指定的主题应用于创建的 html。 如果为 None,或未指定,并且函数传递一个文档或文档的全部根集,则应用该文档的主题。 否则,应用默认主题。

  • suppress_callback_warning (bool, 可选) – 通常,从具有 Python 回调的 Bokeh 文档生成独立 HTML 会导致警告,指出回调无法运行。 但是,可以通过将此值设置为 True 来抑制此警告 (默认值: False)。

返回值:

UTF-8 编码的 HTML

json_item(model: Model, target: ID | None = None, theme: ThemeLike = None) StandaloneEmbedJson[source]#

返回一个 JSON 块,可用于嵌入独立的 Bokeh 内容。

参数:
  • model (Model) – 要嵌入的 Bokeh 对象

  • target (string, optional) – 要将模型嵌入的 div ID。如果为 None,则目标 ID 必须在 JavaScript 调用中提供。

  • theme (Theme, 可选) – 将指定的主题应用于创建的 html。 如果为 None,或未指定,并且函数传递一个文档或文档的全部根集,则应用该文档的主题。 否则,应用默认主题。

返回值:

JSON-like

此函数返回一个 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]#

返回一个脚本标签,它嵌入来自 Bokeh 服务器的内容。

使用这些方法嵌入的 Bokeh 应用程序不会设置浏览器窗口标题。

参数:
  • url (str, optional) –

    Bokeh 服务器上 Bokeh 应用程序的 URL(默认值:“default”)

    如果为 "default",则将使用默认 URL https://127.0.0.1:5006/

  • relative_urls (bool, optional) –

    是否为资源使用相对 URL。

    如果为 True,则为资源(例如 BokehJS JavaScript 和 CSS)生成的链接将是相对链接。

    这通常应设置为 False,但必须在只有相对 URL 可用的情况下设置为 True。例如,在某些配置下在反向代理后面运行 Bokeh 时

  • resources

    指定需要与文档一起加载的资源的字符串。

    如果为 default,则将加载默认的 JS/CSS bokeh 文件。

    如果为 None,则不会加载任何资源文件。如果您希望通过其他方式(例如,从缓存服务器)提供这些资源文件,这将很有用。但是,请注意,您单独加载的资源文件必须与服务器的版本相同,否则渲染可能无法正常工作。

返回值:

一个 <script> 标签,它将嵌入来自 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]#

返回一个脚本标签,该标签嵌入来自 Bokeh 服务器上特定现有会话的内容。

此函数通常仅对从先前使用 bokeh.client API 创建的特定会话提供服务有用。

使用这些方法嵌入的 Bokeh 应用程序不会设置浏览器窗口标题。

注意

通常您不希望为不同的或多个页面加载保存或重新使用此函数的输出。

参数:
  • model (ModelNone, 可选) –

    要从会话中呈现的对象,或 None。(默认值:None)

    如果为 None,则将呈现整个文档。

  • session_id (str) – 服务器会话 ID

  • url (str, optional) –

    Bokeh 服务器上 Bokeh 应用程序的 URL(默认值:“default”)

    如果为 "default",则将使用默认 URL https://127.0.0.1:5006/

  • relative_urls (bool, optional) –

    是否为资源使用相对 URL。

    如果为 True,则为资源(例如 BokehJS JavaScript 和 CSS)生成的链接将是相对链接。

    这通常应设置为 False,但必须在只有相对 URL 可用的情况下设置为 True。例如,在某些配置下在反向代理后面运行 Bokeh 时

  • resources

    指定需要与文档一起加载的资源的字符串。

    如果为 default,则将加载默认的 JS/CSS bokeh 文件。

    如果为 None,则不会加载任何资源文件。如果您希望通过其他方式(例如,从缓存服务器)提供这些资源文件,这将很有用。但是,请注意,您单独加载的资源文件必须与服务器的版本相同,否则渲染可能无法正常工作。

返回值:

一个 <script> 标签,它将嵌入来自 Bokeh 服务器的内容。

警告

通常,为每个页面加载重新使用相同的 session_id 是一个坏主意。这很可能会导致可扩展性和安全性问题,并会导致“共享 Google 文档”行为,这可能是不可取的。