介绍#
术语表#
这些是你在Bokeh文档中会遇到的最重要的概念和术语:
- Annotation#
- Application#
Bokeh 应用程序是生成 Bokeh 文档 的配方。通常,这是由 Bokeh 服务器 在创建新会话时运行的 Python 代码。
- BokehJS#
JavaScript客户端库,实际上在浏览器中渲染视觉效果并处理Bokeh plots和widgets的UI交互。在大多数情况下,Bokeh会自动处理与BokehJS的所有交互(“我们编写JavaScript,所以您不必编写”)。有关更多详细信息,请参阅贡献给BokehJS章节的贡献指南。
- Document#
Bokeh 的组织数据结构 applications。文档包含所有 Bokeh models 和渲染交互式可视化或应用程序所需的数据。
- Embedding#
帮助在网页应用、网页或Jupyter笔记本中包含Bokeh 图表和 小部件的各种方法。 详情请参阅用户指南中的网页部分。
- Glyph#
用于绘制矢量图形以表示数据的API对象。Glyphs是Bokeh plots的基本视觉构建块。这包括诸如线条、矩形、正方形、楔形或散点图的圆圈等元素。bokeh.plotting接口提供了一种方便的方式来创建以glyphs为中心的图表。更多信息请参见基本绘图在用户指南中。
- Layout#
一组Bokeh对象的集合。这可以是多个图表和小部件,以嵌套的行和列排列。有关更多信息和示例,请参阅网格和布局在用户指南中。
- Model#
Bokeh可视化由最低级别的对象组成。Bokeh的模型是bokeh.models接口的一部分。大多数用户不会直接使用这个级别的接口来组装图表。然而,最终所有的Bokeh图表都由模型的集合组成。理解它们以配置它们的属性和属性是有帮助的。有关更多信息,请参阅外观在用户指南中。
- Plot#
包含所有各种对象(如渲染器、字形或注释)的容器。bokeh.plotting 接口提供了
figure()
函数来帮助组装所有必要的对象。- Renderer#
任何绘制图表元素的方法或函数的通用术语。 由渲染器生成的元素的示例包括 glyphs 或 annotations。
- Server#
Bokeh 服务器是一个可选组件。您可以使用 Bokeh 服务器来共享和发布 Bokeh 图表和应用程序,处理大数据集的流式传输,或启用基于widgets和选择的复杂用户交互。有关更多信息和示例,请参阅Bokeh 服务器在用户指南中的部分。
- Widget#
用户界面元素,如滑块、下拉菜单或按钮,这些元素不是Bokeh plot的直接部分。您可以在Python代码中使用来自小部件的事件和数据,或者使用小部件的输入来更新您的Bokeh plot本身。您可以在独立的applications中使用小部件,或者与Bokeh server一起使用。有关示例和信息,请参阅Interaction在用户指南中。
输出方法#
Bokeh 提供了多种生成交互式输出的方法。以下两个函数是最常见的:
output_file()
为Bokeh可视化生成简单的独立HTML文档。
output_notebook()
在Jupyter/Zeppelin笔记本中显示Bokeh可视化。
这些输出函数通常与show()
或save()
一起使用。这里有一个例子:
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)
此脚本生成一个名为 output.html
的HTML文件,其中包含一个折线图。您可以使用 python foo.py
来执行它,其中 foo.py
是脚本的名称。
这些函数在交互式设置中或用于创建独立的Bokeh文档以从后端Web应用程序提供服务时通常很有用。
Bokeh 设置#
有多种全局设置会影响Bokeh的操作方式。您可以使用几种方法来更改Bokeh的配置:例如,直接在Python代码中、在YAML配置文件中或使用环境变量。所有可用设置的完整列表以及如何更改它们的详细信息可在bokeh.settings中找到。
一些最有用的设置是:
browser
(environment variableBOKEH_BROWSER
)将此配置值设置为您希望Bokeh使用的浏览器(例如在调用
show()
时)。有效值是Python webbrowser模块中任何预定义的浏览器名称。例如:chromium-browser
或windows-default
。您还可以将此变量设置为浏览器的完整路径。例如:export BOKEH_BROWSER=/usr/bin/chromium-browser
$Env:BOKEH_BROWSER="C:/Program\ Files/Google/Chrome/Application/chrome.exe %s &"
set BOKEH_BROWSER="C:/Program\ Files/Google/Chrome/Application/chrome.exe %s &"
resources
(environment variableBOKEH_RESOURCES
)要在浏览器中显示交互式可视化,Bokeh需要加载 BokehJS。设置此配置值以定义从何处加载 BokehJS。例如:
cdn
从Bokeh的内容分发网络(CDN)加载BokehJSserver
从 Bokeh 服务器加载relative
用于加载相对于给定目录的本地版本。
所有可用的选项都列在
Resources
。你可以将此变量的某些值与其他配置值结合使用,例如
cdn_version
(BOKEH_CDN_VERSION
) 和rootdir
(BOKEH_ROOTDIR
)。详情请参阅 bokeh.settings。
接口#
Bokeh 为不希望被软件复杂细节分心的用户(如数据科学家和领域专家)提供了一个简单直观的界面。同时,Bokeh 也迎合了那些可能希望获得更多控制或访问更复杂功能的人,如应用程序开发人员和软件工程师。
因此,Bokeh 采用了分层的方法,并为不同的用户提供了适合的不同编程接口。
本节概述了您可以使用的两个接口:主要接口 bokeh.plotting 和低级别的 bokeh.models 接口。
如果您想直接开始基本绘图,请前往 基本绘图。有关使用Bokeh创建可视化的简单逐步指南,请参阅入门指南。
bokeh.plotting 接口#
bokeh.plotting 是 Bokeh 的主要接口。这个通用接口类似于其他库的绘图接口,例如 Matplotlib 或 Matlab。
bokeh.plotting 界面让你专注于将图形与数据关联起来。它会自动为你组装带有默认元素(如轴、网格和工具)的图表。
figure()
函数是 bokeh.plotting 接口的核心。这个函数创建了一个 figure()
模型,该模型包含了向图表添加不同类型字形的方法。此函数还负责组合可视化的各种元素,如轴、网格和工具。
以下是 bokeh.plotting 的一个示例,以及生成的图表:
from bokeh.plotting import figure, output_file, show
# create a figure object
p = figure(width=300, 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()
函数即可创建一个基本的绘图对象。要向绘图对象添加数据渲染器,可以调用像figure.circle
这样的字形方法。你不需要担心轴和网格(尽管你可以根据需要配置它们),你只需要列出你想要添加的工具。要在浏览器中显示你的可视化,大多数情况下,你只需要调用输出函数show()
。
使用bokeh.plotting接口,您有更多可能性来创建和自定义您的可视化。例如:
将图表保存为HTML文件而不是显示它
样式化和移除轴、网格、注释和交互元素
添加更多数据渲染器
将多个图表和小部件排列成布局
本用户指南的基本绘图部分将引导您了解bokeh.plotting接口的更多示例和常见用例。
有关使用Bokeh构建第一个可视化的简单指南,请参阅入门指南。
bokeh.models 接口#
使用Bokeh的低级 bokeh.models接口,您可以完全控制Bokeh如何创建可视化的所有元素。然而,Bokeh的低级接口不会帮助您以有意义或正确的方式组装各种元素。完全由您来将它们组合在一起。
因此,除非您有需要更精细控制的特殊应用,您可能会希望使用bokeh.plotting接口如上所述。
要能够使用bokeh.models接口,你需要理解Bokeh使你能够生成交互式、基于浏览器的可视化的基本原理。在幕后,Bokeh由两个库组成:
- BokehJS, the JavaScript library
BokehJS 在浏览器中运行。这个库负责渲染和用户交互。它以一组声明性的JSON对象作为输入,并将它们用作在浏览器中处理可视化各个方面的指令。例如:
图表和小部件
布局和排列
工具和渲染器
绘制坐标轴
在浏览器中,BokehJS 将这些 JSON 对象转换为 BokehJS 模型,并根据相应的 BokehJS 视图进行渲染。
- Bokeh, the Python library
Python库生成BokehJS用于在浏览器中渲染可视化的JSON对象。
在最底层,Python库使用一组
model
类,这些类精确地反映了BokehJS在浏览器中创建的模型集。这些Python
model
类能够验证其内容和属性,并将自身序列化为JSON。大多数模型都非常简单,通常只包含几个属性,没有方法。您可以通过在创建模型时设置这些属性,或者稍后通过设置模型对象上的属性值来配置这些模型的属性。
您可以通过Bokeh的bokeh.models接口访问所有低级别的model
对象。
例如,要创建并配置一个Rect
图形对象:
# configure attributes when initializing a model object
glyph = Rect(x="x", y="y2", w=10, h=20, line_color=None)
# assign values to attributes to an existing model object
glyph.fill_alpha = 0.5
glyph.fill_color = "navy"
通常,您可以通过这种方式配置所有Bokeh模型。由于所有Bokeh接口最终都会生成Bokeh模型的集合,因此无论使用哪种接口,您都可以以相同的方式设置和配置图表和小部件。
有关Bokeh模型的更多信息,请参阅bokeh.models在参考指南中。
注意
Python库允许与能够生成适当JSON输出的其他语言进行绑定。有关更多详细信息和可用的绑定,请参见贡献语言绑定。