介绍#

术语表#

这些是你在Bokeh文档中会遇到的最重要的概念和术语:

Annotation#

使阅读图表更容易的视觉辅助工具。这包括标题、图例、标签或带状区域等。有关更多信息和示例,请参阅注释用户指南中的部分。

Application#

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

BokehJS#

JavaScript客户端库,实际上在浏览器中渲染视觉效果并处理Bokeh plotswidgets的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#

任何绘制图表元素的方法或函数的通用术语。 由渲染器生成的元素的示例包括 glyphsannotations

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 variable BOKEH_BROWSER)

将此配置值设置为您希望Bokeh使用的浏览器(例如在调用show()时)。有效值是Python webbrowser模块中任何预定义的浏览器名称。例如:chromium-browserwindows-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 variable BOKEH_RESOURCES)

要在浏览器中显示交互式可视化,Bokeh需要加载 BokehJS。设置此配置值以定义从何处加载 BokehJS。例如:

  • cdn 从Bokeh的内容分发网络(CDN)加载BokehJS

  • server 从 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 的主要接口。这个通用接口类似于其他库的绘图接口,例如 MatplotlibMatlab

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输出的其他语言进行绑定。有关更多详细信息和可用的绑定,请参见贡献语言绑定