bokeh.sphinxext#
为了帮助自动化和简化 Bokeh 文档的生成,创建了一些 Sphinx 扩展。除 bokeh.sphinxext.bokeh_plot 外,大多数扩展不会引起人们的普遍兴趣,该扩展允许任何人直接在其自己的 Sphinx 文档中包含和嵌入 Bokeh 绘图。
bokeh_autodoc#
将 Bokeh 扩展集成到 Sphinx autodoc 中。
确保自动文档指令(如 autoclass
)在适当情况下自动使用 Bokeh 特定指令。以下 Bokeh 扩展已配置
要启用此扩展,请将 “bokeh.sphinxext.bokeh_autodoc” 添加到 Sphinx 配置模块中的扩展列表中。
bokeh_color#
记录 Bokeh 命名颜色。
bokeh-color
指令接受命名颜色作为其参数
.. bokeh-color:: aliceblue
并生成带标签的颜色色板作为输出。
bokeh-color
指令可以显式使用,也可以与 bokeh_autodoc 扩展一起使用。
要启用此扩展,请将 “bokeh.sphinxext.bokeh_color” 添加到 Sphinx 配置模块中的扩展列表中。
bokeh_dataframe#
为 pandas Dataframe 生成内联可视化表示。
此指令将 df.head().to_html()
的输出嵌入到 HTML 输出中。
例如
:bokeh-dataframe:`bokeh.sampledata.sprint.sprint`
将生成以下输出
姓名 | 国家 | 奖牌 | 时间 | 年份 | 缩写 | 速度 | 落后米数 | 奖牌填充 | 奖牌线条 | 选中姓名 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 尤塞恩·博尔特 | 牙买加 | 金牌 | 9.63 | 2012 | 牙买加 | 10.384216 | 0.000000 | #efcf6d | #c8a850 | |
1 | 约汉·布雷克 | 牙买加 | 银牌 | 9.75 | 2012 | 牙买加 | 10.256410 | 1.230769 | #cccccc | #b0b0b1 | |
2 | 贾斯廷·加特林 | 美国 | 铜牌 | 9.79 | 2012 | 美国 | 10.214505 | 1.634321 | #c59e8a | #98715d | |
3 | 尤塞恩·博尔特 | 牙买加 | 金牌 | 9.69 | 2008 | 牙买加 | 10.319917 | 0.619195 | #efcf6d | #c8a850 | |
4 | 理查德·汤普森 | 特立尼达和多巴哥 | 银牌 | 9.89 | 2008 | 特立尼达和多巴哥 | 10.111223 | 2.628918 | #cccccc | #b0b0b1 |
要启用此扩展,请将 “bokeh.sphinxext.bokeh_dataframe” 添加到 Sphinx 配置模块中的扩展列表中。
bokeh_enum#
全面记录 Bokeh 枚举。
bokeh-enum
指令为枚举生成有用的文档,包括所有允许的值。如果值的个数很多,则完整列表将放在可折叠的代码块中。
此指令以 Bokeh 枚举变量的名称作为参数,以模块名称作为选项。可以将可选描述作为内容添加。
.. bokeh-enum:: baz
:module: bokeh.sphinxext.sample
Specify a baz style
示例
上面的指令将生成以下输出
- baz = Enumeration(a, b, c)#
指定 baz 样式
虽然可以显式使用 bokeh-enum
,但在与 bokeh_autodoc 扩展一起使用时,这更方便。组合使用,上面的相同输出将直接从以下代码生成
#: Specify a baz style
baz = enumeration("a", "b", "c")
要启用此扩展,请将 “bokeh.sphinxext.bokeh_enum” 添加到 Sphinx 配置模块中的扩展列表中。
bokeh_gallery#
从配置文件中生成 Bokeh 绘图图库。
要启用此扩展,请将 “bokeh.sphinxext.bokeh_gallery” 添加到 Sphinx 配置模块中的扩展列表中。
bokeh_jinja#
自动记录 Bokeh Jinja2 模板。
此指令以指向定义 Jinja2 模板的属性名的模块路径作为参数
.. bokeh-jinja:: bokeh.core.templates.FILE
将显示所有模板参数,并且模板源代码将在可折叠的代码块中呈现。例如,上面的用法将生成以下输出
- FILE = <Template 'file.html'>
将 Bokeh 模型渲染到基本 .html 文件中。
- 参数:
用户可以通过提供接受相同参数的自己的 Jinja2 模板来自定义文件输出。
模板: file.html
{% from macros import embed %} <!DOCTYPE html> <html lang="en"> {% block head %} <head> {% block inner_head %} <meta charset="utf-8"> <title>{% block title %}{{ title | e if title else "Bokeh Plot" }}{% endblock %}</title> {% block preamble -%}{%- endblock %} {% block resources %} <style> html, body { box-sizing: border-box; display: flow-root; height: 100%; margin: 0; padding: 0; } </style> {% block css_resources -%} {{- bokeh_css if bokeh_css }} {%- endblock css_resources %} {% block js_resources -%} {{ bokeh_js if bokeh_js }} {%- endblock js_resources %} {% endblock resources %} {% block postamble %}{% endblock %} {% endblock inner_head %} </head> {% endblock head%} {% block body %} <body> {% block inner_body %} {% block contents %} {% for doc in docs %} {{ embed(doc) if doc.elementid }} {%- for root in doc.roots %} {% block root scoped %} {{ embed(root) }} {% endblock %} {% endfor %} {% endfor %} {% endblock contents %} {{ plot_script | indent(4) }} {% endblock inner_body %} </body> {% endblock body%} </html>
要启用此扩展,请将 “bokeh.sphinxext.bokeh_jinja” 添加到 Sphinx 配置模块中的扩展列表中。
bokeh_model#
全面记录 Bokeh 模型类。
bokeh-model
指令将自动记录 Bokeh 模型子类的所有属性(包括 Bokeh 属性)。还将生成显示所有可能的 JSON 字段的 JSON 原型。
此指令以 Bokeh 模型类的名称作为参数,以其模块作为选项
.. bokeh-model:: Foo
:module: bokeh.sphinxext.sample
示例
对于以下 bokeh.sphinxext.sample.Foo
的定义
class Foo(Model):
''' This is a Foo model. '''
index = Either(Auto, Enum('abc', 'def', 'xzy'), help="doc for index")
value = Tuple(Float, Float, help="doc for value")
使用将产生以下输出
- class Foo(*args: Any, id: ID | None = None, **kwargs: Any)[source]#
继承自:
Model
这是一个 Foo 模型。
JSON 原型
{ "id": "p72051", "index": "auto", "js_event_callbacks": { "type": "map" }, "js_property_callbacks": { "type": "map" }, "name": null, "subscribed_events": { "type": "set" }, "syncable": true, "tags": [], "value": { "name": "unset", "type": "symbol" } }
- name = None#
-
模型的任意用户提供的名称。
此名称在查询文档以检索特定 Bokeh 模型时很有用。
>>> plot.circle([1,2,3], [4,5,6], name="temp") >>> plot.select(name="temp") [GlyphRenderer(id='399d53f5-73e9-44d9-9527-544b761c7705', ...)]
注意
不保证任何提供的名称的唯一性或其他条件,Bokeh 也不会直接出于任何原因使用该名称。
- syncable = True#
- 类型:
指示此模型是否应在网页浏览器中更新时同步回 Bokeh 服务器。设置为
False
在处理频繁更新的对象时可能有用,这些对象更新的值我们不需要。注意
将此属性设置为
False
将阻止此对象上的任何on_change()
回调触发。但是,任何 JS 端回调仍然会起作用。
- tags = []#
- 类型:
一个可选的任意用户提供的值的列表,附加到此模型。
此数据在查询文档以检索特定 Bokeh 模型时很有用
>>> r = plot.circle([1,2,3], [4,5,6]) >>> r.tags = ["foo", 10] >>> plot.select(tags=['foo', 10]) [GlyphRenderer(id='1de4c3df-a83d-480a-899b-fb263d3d5dd9', ...)]
或者只是将任何必要的元数据附加到模型的便捷方式,这些元数据可以通过
CustomJS
回调等访问。注意
不保证任何提供的标签的唯一性或其他条件,Bokeh 也不会直接出于任何原因使用这些标签。
- apply_theme(property_values: dict[str, Any]) None #
应用一组主题值,这些值将被使用而不是默认值,但不会覆盖应用程序设置的值。
传递的字典可能会被保留原样并与其他实例共享以节省内存(因此调用者和
HasProps
实例都不应该修改它)。- 参数:
property_values (dict) – 用于代替默认值的主题值
- 返回值:
None
- classmethod clear_extensions() None #
清除所有当前定义的自定义扩展。
序列化调用将导致所有当前定义的自定义扩展包含在生成的文档中,无论它们是否被使用。此方法可用于清除所有现有的自定义扩展定义。
- classmethod descriptors() list[PropertyDescriptor[Any]] #
按定义顺序排列的属性描述符列表。
- equals(other: HasProps) bool #
模型的结构相等。
- 参数:
other (HasProps) – 要比较的另一个实例
- 返回值:
如果属性结构相等,则为 True,否则为 False
- js_link(attr: str, other: Model, other_attr: str, attr_selector: int | str | None = None) None #
使用 JavaScript 链接两个 Bokeh 模型属性。
这是一个便捷方法,它简化了添加
CustomJS
回调,以便在另一个 Bokeh 模型属性更改值时更新它。- 参数:
在版本 1.1 中添加
- 引发:
示例
带有
js_link
的代码select.js_link('value', plot, 'sizing_mode')
等同于以下代码
from bokeh.models import CustomJS select.js_on_change('value', CustomJS(args=dict(other=plot), code="other.sizing_mode = this.value" ) )
此外,要使用 attr_selector 将范围滑块的左侧附加到绘图的 x_range
range_slider.js_link('value', plot.x_range, 'start', attr_selector=0)
等同于
from bokeh.models import CustomJS range_slider.js_on_change('value', CustomJS(args=dict(other=plot.x_range), code="other.start = this.value[0]" ) )
- js_on_change(event: str, *callbacks: JSChangeCallback) None #
将
CustomJS
回调附加到任意 BokehJS 模型事件。在 BokehJS 方面,模型属性的更改事件具有
"change:property_name"
的形式。为了方便起见,如果传递给此方法的事件名称也是模型上属性的名称,则它将自动以"change:"
为前缀# these two are equivalent source.js_on_change('data', callback) source.js_on_change('change:data', callback)
但是,除了属性更改事件之外,还有其他类型的事件可以用于响应。例如,要在将数据流式传输到
ColumnDataSource
时运行回调,请在源上使用"stream"
事件source.js_on_change('streaming', callback)
- classmethod lookup(name: str, *, raises: bool = True) PropertyDescriptor[Any] | None #
在类上查找 Bokeh 属性的
PropertyDescriptor
,给定属性名称。- 参数:
- 返回值:
名为
name
的属性的描述符- 返回值类型:
- on_change(attr: str, *callbacks: PropertyCallback) None #
在此对象上添加回调,以便在
attr
更改时触发。- 参数:
attr (str) – 此对象上的属性名称
*callbacks (callable) – 要注册的回调函数
- 返回值:
None
示例
widget.on_change('value', callback1, callback2, ..., callback_n)
- on_event(event: str | type[Event], *callbacks: Callable[[Event], None] | Callable[[], None]) None #
当此模型上发生指定事件时,运行回调
并非所有事件都支持所有模型。有关哪些模型能够触发特定事件的更多信息,请参阅bokeh.events。
- classmethod properties(*, _with_props: bool = False) set[str] | dict[str, Property[Any]] #
收集此类上属性的名称。
警告
在 Bokeh 的未来版本中,此方法将返回一个字典,该字典将属性名称映射到属性对象。为了使当前对该方法的用法面向未来,请将返回值包装在
list
中。- 返回值:
属性名称
- classmethod properties_with_refs() dict[str, Property[Any]] #
收集此类上所有也具有引用的属性的名称。
此方法始终遍历类层次结构,并包含在任何父类上定义的属性。
- properties_with_values(*, include_defaults: bool = True, include_undefined: bool = False) dict[str, Any] #
收集一个字典,将属性名称映射到它们的值。
此方法始终遍历类层次结构,并包含在任何父类上定义的属性。
不可序列化属性将被跳过,属性值将采用“序列化”格式,这可能与您通常从属性中读取的值略有不同;此方法的目的是返回无损重建对象实例所需的信息。
- query_properties_with_values(query: Callable[[PropertyDescriptor[Any]], bool], *, include_defaults: bool = True, include_undefined: bool = False) dict[str, Any] #
使用谓词查询
HasProps
实例的属性值。
- select(selector: SelectorType) Iterable[Model] #
查询此对象及其所有引用,以查找与给定选择器匹配的对象。
- 参数:
selector (JSON-like)
- 返回值:
seq[Model]
- select_one(selector: SelectorType) Model | None #
查询此对象及其所有引用,以查找与给定选择器匹配的对象。如果找到多个对象,则会引发错误。返回单个匹配对象,或者如果未找到任何对象,则返回 None :param selector: :type selector: JSON-like
- 返回值:
Model
- set_from_json(name: str, value: Any, *, setter: Setter | None = None) None #
从 JSON 设置对象上的属性值。
- 参数:
name (str) – 要设置的属性的名称
value (JSON-value) – 要设置为属性的值
setter (ClientSession or ServerSession or None, optional) –
这用于防止对 Bokeh 应用程序的“回旋镖”更新。
在 Bokeh 服务器应用程序的上下文中,传入的属性更新将被标记为正在执行更新的会话。此值在更新触发的任何后续更改通知中传播。会话可以将事件设置程序与其自身进行比较,并抑制来自其自身的任何更新。
- 返回值:
None
- set_select(selector: type[Model] | SelectorType, updates: dict[str, Any]) None #
使用指定的属性/值更新来更新与给定选择器匹配的对象。
- 参数:
selector (JSON-like)
updates (dict)
- 返回值:
None
- themed_values() dict[str, Any] | None #
获取任何主题提供的覆盖。
结果以字典形式返回,从属性名称到值,如果主题没有覆盖此实例的任何值,则返回
None
。- 返回值:
dict 或 None
- to_serializable(serializer: Serializer) ObjectRefRep #
将此对象转换为可序列化表示形式。
- trigger(attr: str, old: Any, new: Any, hint: DocumentPatchedEvent | None = None, setter: Setter | None = None) None #
bokeh-model
方向可以显式使用,也可以与 bokeh_autodoc 扩展一起使用。
要启用此扩展,请将 “bokeh.sphinxext.bokeh_model” 添加到 Sphinx 配置模块中的扩展列表中。
bokeh_options#
彻底记录 Bokeh 选项类。
bokeh-options
指令将在“关键字参数”标题下自动记录 Bokeh 选项类的所有属性。
此指令将 Bokeh 选项子类的名称作为参数,并将它的模块作为选项。
.. bokeh-options:: Opts
:module: bokeh.sphinxext.sample
示例
对于 bokeh.sphinxext.sample.Opts
的以下定义
class Opts(Options):
''' This is an Options class '''
host = String(default="localhost", help="a host to connect to")
port = Int(default=5890, help="a port to connect to")
上面的用法会产生以下输出
要启用此扩展,请将 “bokeh.sphinxext.bokeh_options” 添加到 Sphinx 配置模块中的扩展列表中。
bokeh_palette#
生成单个调色板的内联视觉表示形式。
:bokeh-palette:
角色可以通过提供以下任何内容来使用
来自
bokeh.palettes
的调色板名称,例如Spectral9
来自
bokeh.palettes
的调色板函数,使用参数调用,例如viridis(12)
显式的颜色列表:
['#000000', '#333333', '#666666', '#999999', '#cccccc', '#ffffff']
以下指令用法有效
按名称
:bokeh-palette:`Spectral9`
按函数
:bokeh-palette:`viridis(12)`
按列表
:bokeh-palette:`['#000000', '#333333', '#666666', '#999999', '#cccccc', '#ffffff']`
调色板色块高度为 20 像素。对于少于 20 色的调色板,色块的默认宽度为 20 像素。如果给出更大的调色板,则 HTML 跨度的宽度会逐渐减小,最小为 1 像素。例如,使用以下表达式显示完整的 Viridis 调色板:
:bokeh-palette:`viridis(256)`
将生成以下输出
要启用此扩展,请将 “bokeh.sphinxext.bokeh_palette” 添加到 Sphinx 配置模块中的扩展列表中。
bokeh_palette_group#
在 Bokeh 调色板组中生成调色板的视觉表示。
bokeh.palettes
模块公开了诸如 mpl
、brewer
和 d3
之类的属性,这些属性提供了调色板组。 bokeh-palette-group
指令接受这些组之一的名称,并为组中的每个调色板生成一个颜色视觉矩阵。
例如,以下指令的用法
.. bokeh-palette-group:: mpl
生成以下输出
Cividis |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
3 | |||||||||||
4 | |||||||||||
5 | |||||||||||
6 | |||||||||||
7 | |||||||||||
8 | |||||||||||
9 | |||||||||||
10 | |||||||||||
11 |
Inferno |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
3 | |||||||||||
4 | |||||||||||
5 | |||||||||||
6 | |||||||||||
7 | |||||||||||
8 | |||||||||||
9 | |||||||||||
10 | |||||||||||
11 |
Magma |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
3 | |||||||||||
4 | |||||||||||
5 | |||||||||||
6 | |||||||||||
7 | |||||||||||
8 | |||||||||||
9 | |||||||||||
10 | |||||||||||
11 |
Plasma |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
3 | |||||||||||
4 | |||||||||||
5 | |||||||||||
6 | |||||||||||
7 | |||||||||||
8 | |||||||||||
9 | |||||||||||
10 | |||||||||||
11 |
Viridis |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
3 | |||||||||||
4 | |||||||||||
5 | |||||||||||
6 | |||||||||||
7 | |||||||||||
8 | |||||||||||
9 | |||||||||||
10 | |||||||||||
11 |
注意
此扩展假定 Bootstrap 和 JQuery 都存在(Bokeh 文档主题就是这样)。如果在 Bokeh 文档之外使用此主题,请确保手动包含这些资源。
要启用此扩展,请将 “bokeh.sphinxext.bokeh_palette_group” 添加到 Sphinx 配置模块中的扩展列表中。
bokeh_plot#
在 Sphinx HTML 文档中包含 Bokeh 图表。
对于其他输出类型,将生成占位符文本 [graph]
。
bokeh-plot
指令可以通过以下两种方式使用:
将源文件的路径作为指令的参数提供
.. bokeh-plot:: path/to/plot.py
注意
.py 脚本不会自动扫描!为了将某些目录包含到 .py 扫描过程中,请在 sphinx conf.py 文件中使用以下指令:bokeh_plot_pyfile_include_dirs = [“dir1”,”dir2”]
将内联代码作为指令的内容提供
.. bokeh-plot::
from bokeh.plotting import figure, output_file, show
output_file("example.html")
x = [1, 2, 3, 4, 5]
y = [6, 7, 6, 4, 5]
p = figure(title="example", width=300, height=300)
p.line(x, y, line_width=2)
p.scatter(x, y, size=10, fill_color="white")
show(p)
此指令也可以与 Sphinx autodoc 结合使用,在 docstrings 中使用。
bokeh-plot
指令接受以下选项
- process-docstring (bool)
是否在与源代码分开的格式化块中显示 docstring。
- source-position (enum(‘above’, ‘below’, ‘none’))
将格式化源代码块放在哪里(如果有)。
- linenos (bool)
是否在源代码旁边显示行号。
示例
上面的内联示例代码产生以下输出
from bokeh.plotting import figure, output_file, show
output_file("example.html")
x = [1, 2, 3, 4, 5]
y = [6, 7, 6, 4, 5]
p = figure(title="example", width=300, height=300)
p.line(x, y, line_width=2)
p.scatter(x, y, size=10, fill_color="white")
show(p)
要启用此扩展,请将 “bokeh.sphinxext.bokeh_plot” 添加到 Sphinx 配置模块中的扩展列表中。
bokeh_prop#
全面记录 Bokeh 属性属性。
bokeh-prop
指令生成 Bokeh 模型属性的文档,包括到相关属性类型的交叉链接。此外,还会显示任何针对每个属性的帮助字符串。
此指令将 Bokeh 属性的名称(class.attr)作为其参数,并将模块作为选项
.. bokeh-prop:: Bar.thing
:module: bokeh.sphinxext.sample
示例
对于以下 bokeh.sphinxext.sample.Bar
的定义
class Bar(Model):
''' This is a Bar model. '''
thing = List(Int, help="doc for thing")
上面的用法会产生以下输出
bokeh-prop
指令可以显式使用,也可以与 bokeh_autodoc 扩展结合使用。
要启用此扩展,请将 “bokeh.sphinxext.bokeh_prop” 添加到 Sphinx 配置模块中的扩展列表中。
bokeh_releases#
将所有 Bokeh 发行说明发布到单个页面上。
此指令会收集 docs/releases
子目录中的所有发行说明文件,并以反向版本顺序将它们包含进来。典型用法
.. toctree::
.. bokeh-releases::
为了避免关于孤立文件的警告,请将以下内容添加到 Sphinx conf.py
文件中
exclude_patterns = ['docs/releases/*']
要启用此扩展,请将 “bokeh.sphinxext.bokeh_releases” 添加到 Sphinx 配置模块中的扩展列表中。
bokeh_roles#
简化到 Bokeh Github 资源的链接。
此模块提供了角色,可用于轻松引用 Bokeh 项目结构中各种来源的信息
:bokeh-commit:
: 链接到特定提交
:bokeh-issue:
: 链接到问题
:bokeh-minpy:
: 提供最低支持的 Python 版本
:bokeh-pull:
: 链接到拉取请求
:bokeh-requires:
: 列出 pyproject.toml 中的安装需求
:bokeh-tree:
: (版本化的)链接到源代码树 URL
示例
以下代码
The repo history shows that :bokeh-commit:`bf19bcb` was made in
in :bokeh-pull:`1698`, which closed :bokeh-issue:`1694`. This included
updating all of the files in the :bokeh-tree:`examples` subdirectory.
产生以下输出
仓库历史记录表明 提交 bf19bcb 是在 拉取请求 1698 中完成的,它关闭了 #1694。这包括更新 examples 子目录中的所有文件。
要启用此扩展,请将 “bokeh.sphinxext.bokeh_roles” 添加到 Sphinx 配置模块中的扩展列表中。
bokeh_sitemap#
生成一个 sitemap.txt
来帮助搜索索引。
sitemap.txt
是文档站点中所有页面的纯文本列表。每个 URL 都在文本文件的一行中列出。它是机器可读的,搜索引擎使用它来了解哪些页面可供索引。
生成网站地图所需的只是在 Sphinx 配置文件 conf.py
中的扩展列表中列出此模块 bokeh.sphinxext.sitemap
。
要启用此扩展,请将 “bokeh.sphinxext.bokeh_sitemap” 添加到 Sphinx 配置模块中的扩展列表中。