Python 绘图 – Bokeh 初探

背景

想了解一下 python 中的几个绘图工具,及其应用场景。bokeh 为其一.

先放一段 Bokeh 的 Vision:

Bokeh is an interactive visualization library that targets modern web browsers for presentation. Its goal is to provide elegant, concise construction of versatile graphics, and to extend this capability with high-performance interactivity over very large or streaming datasets. Bokeh can help anyone who would like to quickly and easily create interactive plots, dashboards, and data applications.

焦点词:交互式,高性能,浏览器。

安装

pip install bokeh 或使用镜像 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bokeh

跑个 demo

参考:Quickstart — Bokeh 1.4.0 documentation

基本步骤:

  • 准备数据
  • 确定输出方式:
    • html 文件 或
    • Jupyter Notebook
  • 建Figure模块(对象):
    • bokeh.plotting 模块
      • 主要的函数:figure()
  • 画图:
    • glyphs, 比如线形图,圆饼等
    • line
  • 显示或保存图
    • show()
    • save()

demo 代码:

from bokeh.plotting import figure, output_file, show
# prepare some data
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]
# output to static HTML file
output_file("lines.html")
# create a new plot with a title and axis labels
p = figure(title="simple line example", x_axis_label='x', y_axis_label='y')
# add a line renderer with legend and line thickness
p.line(x, y, legend_label="Temp.", line_width=2)
# show the results
show(p)

实际图形就不挂出来了,跑一下代码立刻生成。

输出到 Jupyter Notebook

如果是在 Jupyter Notebook 中,用 output_notebook():

from bokeh.io import output_notebook
output_notebook()

理解基本概念

参考:Defining Key Concepts — Bokeh 1.4.0 documentation

Bokeh is an interactive visualization library for modern web browsers. It provides elegant, concise construction of versatile graphics, and affords high-performance interactivity over large or streaming datasets. Bokeh can help anyone who would like to quickly and easily make interactive plots, dashboards, and data applications.

在浏览器中 交互式图表库,interactive 怎么理解呢?

一个简单的例子,比如Interactive Legends — Bokeh 1.4.0 documentation,图表中的图例,可以点击某个或某几个显示或隐藏。

再比如,Adding Widgets — Bokeh 1.4.0 documentation,在浏览器页面上添加 button 等控件。

Bokeh Python 库 和 Bokeh 客户端库 BokehJS(有自己的API), 负责浏览器上图形的绘制和 render,所以这些交互式操作有 JS 的支持,这估计是 bokeh 的一大特色。

大致的结构和接口:

- 最上层:**BokehJS**          render UI and handle UI interactions
            |--- Documents
                    |---Models:
                          |------plots
                                  |------glyphs
                          |------widgets 
                                
                    |---Data:      图表所需的数据
                    |---Widgets:   交互式控件,如 button 等
                    
- 中间层: **boken.plotting**
            |---figure()  -> Figure Model
- 最底层: **bokeh.models**

References

https://www.jianshu.com/p/e80a4c170121

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论