定义关键概念

术语表

为了更好地使用本用户指南,重要的是要有一些高级概念和术语的上下文。这里是一个小词汇表的一些最重要的概念在博克。


应用

Bokeh应用程序是生成Bokeh文档的方法。通常,这是在创建新会话时由Bokeh服务器运行的Python代码。

博克赫斯

JavaScript客户端库,它实际呈现图像并处理浏览器中Bokeh图和小部件的UI交互。通常,用户不必太多考虑Bokeh的这方面 (“我们编写JavaScript,所以您不必这样做!”) 但最好有这种二分法的基本知识。有关详细信息,请参见 博克赫斯 第章 开发商 指南。

文件

一种用于Bokeh应用程序的组织数据结构。文档包含在浏览器中呈现交互式可视化或应用程序所需的所有Bokeh模型和数据。

嵌入

将Bokeh绘图和小部件包含到web应用程序和页面或IPython笔记本中的各种方法。看到了吗 嵌入Bokeh内容 了解更多详细信息。

字形

Bokeh图的基本视觉构建块,例如直线、矩形、正方形、楔块、面片等 bokeh.plotting 接口提供了一种以字形为中心创建绘图的便捷方法。看到了吗 使用基本图示符打印 更多信息。

模型

构成Bokeh“scenegraphs”的最底层对象。他们住在 bokeh.models 接口。 大多数用户不会使用此级别的界面直接组装绘图。 然而,最终所有的Bokeh图都是由模型的集合组成的,因此对它们进行足够的理解以配置它们的属性和属性是很重要的。看到了吗 设置视觉属性样式 更多信息。

服务器

Bokeh服务器是一个可选组件,可用于共享和发布Bokeh图和应用程序,处理大型数据集的流式处理,或基于小部件和选择启用复杂的用户交互。看到了吗 运行Bokeh服务器 更多解释。

小部件

Bokeh图之外的用户界面元素,如滑块、下拉菜单、按钮等。来自widget的事件和更新可以通知额外的计算,或导致Bokeh图更新。widget可以在独立应用程序中使用,也可以与Bokeh服务器一起使用。有关示例和信息,请参见 进行互动 .


输出方法

正如我们在用户指南中经常看到的那样,有多种方法可以为Bokeh文档生成输出。最常见的交互用法是:

output_file

用于为Bokeh可视化生成简单的独立HTML文档。

output_notebook

用于在Jupyter/Zeppelin笔记本电脑单元格中显示Bokeh可视化效果。

这些函数通常与 showsave 功能。使用这些输出的脚本通常类似于:

from bokeh.plotting import figure, output_file, show

output_file("output.html")

p = figure()
p.line(x=[1, 2, 3], y=[4,6,2])

show(p)

如果调用此脚本 foo.py 然后执行 python foo.py 将生成一个HTML文件 output.html 用直线图生成。这些函数通常在交互式设置中很有用,或者用于创建独立的Bokeh文档以从(Flask、Django等)web应用程序中提供服务。

然而,Bokeh还提供了一个强大的命令行工具 bokeh 也可用于生成各种输出:

bokeh html

从任何类型的Bokeh应用程序源创建独立的HTML文档:例如python脚本、应用程序目录、JSON文件等。

bokeh json

从任何类型的Bokeh应用程序源生成Bokeh文档的序列化JSON表示。

bokeh serve

将Bokeh文档作为交互式web应用程序发布。

使用 bokeh 命令是您编写的代码不必指定任何特定的输出方法或格式。你可以写 只是可视化代码 一次,然后决定以不同的方式输出。上述示例可简化为:

from bokeh.plotting import figure, curdoc

p = figure()
p.line(x=[1, 2, 3], y=[4,6,2])
curdoc().add_root(p)

现在,你可以跑了 bokeh html foo.py 生成一个独立的HTML文件,或者 bokeh serve foo.py 开始将此文档作为web应用程序提供。有关命令行工具的详细信息,请参见 使用命令行 .

界面

Bokeh旨在为那些不想被软件细节分心的数据科学家和领域专家提供一个快速而简单的界面,同时也为那些想要更多控制或访问更复杂功能的应用程序开发人员和软件工程师提供一个非常详细的界面。正因为如此,Bokeh采用了分层的方法,并为不同的使用级别提供了不同的编程接口。本节概述了Bokeh用户可以使用的各种接口,以及关于库的最重要概念的更多上下文。如果您想直接进入基本绘图,请转到 使用基本图示符打印 .

bokeh.models

Bokeh实际上由两个库组件组成。

第一个组件是在浏览器中运行的JavaScript库BokehJS。这个库负责所有的渲染和用户交互。它的输入是一个包含“scenegraph”的声明性JSON对象的集合。这个场景图中的对象描述了BokehJS应该处理的所有事情:显示了什么样的绘图和小部件,以什么样的方式排列,绘图将有什么工具和渲染器以及轴等等。这些JSON对象在浏览器中被转换成BokehJS模型,并由相应的BokehJS视图呈现。

第二个组件是Python(或其他语言)的库,可以生成上面描述的JSON。在Python-Bokeh库中,这是通过公开一组“model”类来实现的,这些类完全镜像在浏览器中创建的BokehJS模型集。这些Python模型类知道如何验证它们的内容和属性,以及如何将自己序列化为JSON。所有这些低级模型都生活在 low-level |博克模型|接口。大多数模型都非常简单,通常由几个属性属性组成,没有方法。可以在创建模型时配置模型属性,也可以稍后通过在模型对象上设置属性值来配置模型属性。下面是一个 |Rect| 字形对象:::

# properties can be configured when a model object is initialized
glyph = Rect(x="x", y="y2", w=10, h=20, line_color=None)

# or by assigning values to attributes on the model later
glyph.fill_alpha = 0.5
glyph.fill_color = "navy"

这些配置方法一般适用于所有Bokeh模型。正因为如此,而且由于所有Bokeh接口最终都会产生Bokeh模型的集合,所以不管使用哪个接口,对绘图和小部件进行样式化和配置的方法基本上是相同的。

使用|博克模型|接口提供了对Bokeh图和Bokeh小部件如何组合和配置的完全控制。但是,它无法帮助以有意义或正确的方式组装模型。完全由开发人员“手工”构建场景图。因此,大多数用户可能希望使用|博克。绘图|接口描述如下,除非他们有特殊的要求,需要更精细的控制。有关所有Bokeh型号的详细信息,请咨询 参考文献 .

bokeh.plotting

Bokeh提供 mid-level 一般用途|博克。绘图|其中的特异性与 MatplotlibMatlab 样式打印界面。它的核心是让用户将他们想要显示的视觉符号与他们的数据相关联,另外还需要使用合理的默认轴、网格和工具来组合绘图。组装适当的Bokeh模型以形成BokehJS可以渲染的场景图的所有辛苦工作都是自动处理的。

在主课堂上|博克。绘图|接口就是 figure() 功能。这将创建一个 Figure 包含向绘图添加不同类型图示符的方法的模型。此外,它以适当的方式组成默认轴、栅格和工具,而不需要任何额外的工作。

一个典型的|博克。绘图|用法如下所示,以及结果图:

from bokeh.plotting import figure, output_file, show

# create a Figure object
p = figure(plot_width=300, plot_height=300, tools="pan,reset,save")

# add a Circle renderer to this figure
p.circle([1, 2.5, 3, 2], [2, 3, 1, 1.5], radius=0.3, alpha=0.5)

# specify how to output the plot(s)
output_file("foo.html")

# display the figure
show(p)

主要的观察是,典型的用法是使用 figure() 函数,然后使用glyph方法|图.圆|为我们的数据添加渲染器。我们不必担心配置任何轴或网格(尽管我们可以在需要时配置它们),并且指定工具只需使用要添加的工具的名称即可完成。最后,我们使用一些输出函数来显示我们的绘图。

还有许多其他的可能性:保存绘图而不是显示它,设置或删除轴或网格的样式,添加其他渲染器,以及将多个打印放在一起。这个 使用基本图示符打印 本节 用户指南 将介绍更多使用|博克。绘图|接口。