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

name: str | None = ''#

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

tags: list[Any]#

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

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

返回 JavaScript 代码和一个 script 标签,它们可用于嵌入 Bokeh 图表。

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

参数:
返回值:

要保存在 `script_path` 的 JavaScript 代码,以及用于加载它的 `` 标签

返回类型:

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

返回 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 (ModelDocumentseq[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 内容。

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

  • target (字符串, 可选) – 要将模型嵌入到的 div id。如果为 None,则必须在 JavaScript 调用中提供目标 id。

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

返回值:

类 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 (ModelNone可选) –

    要从会话渲染的对象,或 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 文档”行为,这可能不是期望的行为。