Python Bokeh是一个用于现代web浏览器的交互式可视化库。它提供了优雅、简洁的通用图形结构,并在大型或流式数据集上提供高性能的交互性。Bokeh可以快速轻松地制作交互式绘图、仪表板。
Bokeh概念
先对Bokeh的基本的概念进行说明。在对基本概念有一定的印象后再对使用Bokeh的基础流程进行介绍。
概念 | 说明 |
---|---|
Plot | Bokeh中的核心概念,容纳所有对象(渲染器、向导、数据和工具)的容器,容器中的不同对象组合成最终的可视化。在bokeh.plotting接口提供figure函数能进入到各种不同的的对象中 |
Glyphs | 是Bokeh可以显示的基本视觉标记,为了方便开发而在较高层级的接口。其底层接口为bokeh.models,可以进行完全的控制绘制 |
Guides | 帮助用户判断距离、角度等的视觉辅助工具。包括网格线或波段、轴(如线性、日志或datetime) |
Annotations | 视觉辅助工具,标签或名称的部分。这些包括标题、说明等 |
Ranges | 用来描述了一个Plot的数据空间界限 |
Resources | 要生成Plot,客户库BokehJS JavaScript和CSS代码必须加载到浏览器中 |
Application | 用于生成Bokeh文档的具体对象,通常在Bokeh创建一个连接一个新的回话是创建 |
BokehJS | JavaScript实现Web前端的可视化功能,在浏览器中处理Bokeh图和小部件的UI交互 |
Documents | 为Bokeh应用程序组织数据结构,呈现交互式可视化或应用程序所需的所有Bokeh模型和数据 |
Embedding | 嵌入操作,将Bokeh可视化对象和窗口部件嵌入到Web应用或IPthon notebook中 |
Models | 是包含Bokeh场景最下层的对象,通过bokeh.models接口调用。一般情况下,不会直接使用 |
Server | 可以用于共享和发布Bokeh图和应用程序,用于处理大型数据集的流媒体,或者支持基于小部件和选择的复杂的用户交互 |
Widgets | 在Bokeh图之外的用户界面元素,如滑块、下拉菜单、按钮等。事件和小部件的更新可以通知额外的计算,或者导致Bokeh的情节更新 |
Bokeh使用步骤
这里说明的使用步骤,实际是对bokeh.plotting接口的使用。也是在绝大数情况下的操作步骤。
数据的准备
对于数据源可以是Python的列表数据类型,也可以可以是Numpy array和Pandas Series类型。设置输出文件
可以使用output_file()函数将结果输出到html文件中,使用output_notebook()函数将结果内容输出到Jupyter notebooks文件中调用figure()函数
这将创建一个默认选项的Plot,并可以轻松定制标题、工具和轴标签。用Glyphs渲染数据
使用不同的Glyphs,绘制数据。可指定可视化自定义,如颜色、图例和宽度显示保存结果
使用show()和save()函数那些对结果展示和保存。
核心模块
主要有两个核心的模块构成,分别是BokehJS JavaScript库和bokeh.models Python库。
关于BokehJS JavaScript库。
在浏览器中执行,负责所有的呈现和用户交互。接收一个声明性JSON对象集合,其中包含一要绘制的场景说明。
在接收的JSON中的对象数据将会转换为BokehJS中模型,并在浏览器上显示。对于这个JSON数据文件有Bokeh Ptyhon代码生成。关于bokeh.models Python库。
在Python Bokeh中通过相关的类,用于生成供BokehJS使用的JSON数据。这些Python Bokeh知道如何生成模型的
数据和属性,并序列化为JSON格式。这些功能可以在较为底层中的bokeh.models接口中找到。
示例
from bokeh.plotting import figure, output_file, show
# 准备要绘制的数据
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]
# 以静态网页方式输出可视化结果
output_file("1-lines.html")
# 创建一个包含标题和x,y说明的新的plot
p = figure(title="simple line example", x_axis_label='x', y_axis_label='y')
# 绘制线段
p.line(x, y, legend="Temp.", line_width=2)
# 展示结果
show(p)
输出的结果为html文件,其中html中的展示的结果如下: