Bokeh入门(1)

 

摘录:Bokeh (Bokeh.js) 是一个 Python 交互式可视化库,支持现代化 Web 浏览器,提供非常完美的展示功能。Bokeh 的目标是使用 D3.js 样式提供优雅,简洁新颖的图形化风格,同时提供大型数据集的高性能交互功能。Boken 可以快速的创建交互式的绘图,仪表盘和数据应用

 

 

先放一张自己做的图吧:

Bokeh快速入门(1)_第1张图片 

 

个人觉得最实用的功能就是保存为图片以及实时拖动了,另外就是重置功能了

 

前言:如果需要在web页面上展示图像,我想js绝对是不二选择,但是碍于学习成本又不想花太多时间去学js,那么作为一个对python情有独钟的非典型运维人员,当然得找找python强大的支持库了,一共找到了三款,mpld3pyxleybokeh,第一款个人觉得不够强大,主要是不能直接在浏览器上保存为图片,pyxley属于较新的python项目,官方自己都说说明文档coming soon!!!然后就选择bokeh了,再者bokeh真的异常的强大,还在慢慢摸索ing

 

 

下面是官方文档的入门教程,直接手工翻译的,如有错误还望指正。

参考:http://bokeh.pydata.org/en/latest/docs/quickstart.html#getting-started

 

Bokeh同时提供强大灵活的功能,使得用户可以进行非常高阶个人定制一方面十分简洁而另一方面,Bokeh根据用户的需要公开不同的等级的接口级别给不同级别的用户:

  1. Bokeh.models是一个相对而言低阶的接口,提供了尽可能多的的灵活性以应用程序开发人员。

  2. Bokeh.plotting是一个相对而言中阶的接口,主要以视觉图形为中心。

  3. Bokeh.charts是一个相对而高阶接口,用快速而尽可能简单地构建复杂的统计图。

  4. 次快速入门主要侧重于bokeh.plotting接口

 

快速安装:

有很多种不同的安装方式安装Bokeh

如果你用的是Anaconda (推荐),用以下的命令通过bash或者windows的命令行就可直接安装了。

conda install bokeh


这种安装方式,Anaconda已经准备了运行Bokeh之前所有需要的所有依赖,这也是Bokeh强烈推荐的安装方式,无论任何平台,包括windows,它都可以将安装成本趋近于零。它也会安装一些例子在examples/目录,即Anaconda安装目录的子目录。

如图:

Bokeh快速入门(1)_第2张图片

 

 

当然,如果你有绝对的自信解决这些依赖,依赖包括Numpypandasredis等,你也可以用pip安装

 

pip install bokeh


 

Note

通过pip方式安装,不会安装这些例子,不过可以通过git clone 下载这些例子(examples/)

 

入门指南

Bokeh是一个公开很多能力的大型库,所以这一部分只是一个关于Bokeh常见实用案例以及工作流程的快速的导航。更多的细节请查阅完整的用户指导

 

下面通过一些实例开始。

python基本数据类型list的一些数据画一个线状图,并包括缩放(zoom),区域选择(pan),调整尺寸(resize),保存(save)等工具,是一个简答又直接的方式。

注:建议使用ipython notebook,如果不了解,去了解一下吧

 

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", title="line plot example")

# 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="Temp.", line_width=2)

# show the results
show(p)


Bokeh快速入门(1)_第3张图片

当你执行这个脚本的时候,你将会发现,在当前目录会创建一个lines.html的文件,而且浏览器会自动打开一个窗口并展示这个创建的html文件,效果如上图所示。(为了展示效果,所以才会在教程中直接叫结果嵌在这篇文档中)

 

通过bokeh.plotting接口创建图像的基本步骤如下:

1.准备数据(如这个例子中的lise列表)

2.告诉Bokeh将文件输出的位置(这个例子中用的是output_file(),并制定lines.html作为文件名保存)

3.调用figure()去创建图形,并设置一些全体的参数,如标题,工具,轴标签等。

4.为数据添加渲染器(这个例子中的Figure.line),并加入一些可视化的定制,比如颜色,图标以及这个图形的宽度等

5.Bokehshow()或者save()

其中步骤3,4可以重复创建不止一个图形,详情见下面的其他实例。

 

bokeh.plotting接口也非常便利,如果我们需要在输出更多的一些自定义的数据序列,图标,指数轴线等。它当然也可以非常简单的组合多个图标在一张图形上,如下图所示

from bokeh.plotting import figure, output_file, show
# prepare some data
x = [0.1, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0]
y0 = [i**2 for i in x]
y1 = [10**i for i in x]
y2 = [10**(i**2) for i in x]

# output to static HTML file
output_file("log_lines.html")

# create a new plot
p = figure(
   tools="pan,box_zoom,reset,save",
   y_axis_type="log", y_range=[0.001, 10**11], title="log axis example",
   x_axis_label='sections', y_axis_label='particles')

# add some renderers
p.line(x, x, legend="y=x")
p.circle(x, x, legend="y=x", fill_color="white", size=8)
p.line(x, y0, legend="y=x^2", line_width=3)
p.line(x, y1, legend="y=10^x", line_color="red")
p.circle(x, y1, legend="y=10^x", fill_color="red", line_color="red", size=6)
p.line(x, y2, legend="y=10^x^2", line_color="orange", line_dash="4 4")

# show the resultsshow(p)

Bokeh快速入门(1)_第4张图片

    很好看,有没有

 

后记:搜了一下51cto的视频学院,不管是免费的还是收费的,居然都没有数据分析的课程,虽然自不量力,但是也希望在51CTO上录一个通过numpymatplotlibpandas的数据分析课程,一方面借鉴国外视频的先进经验,一方面也整理下自己的心得。这里有个不错的视频教程,关于pandas的,但是全英文的。

Learning Python for Data Analysis

链接:http://pan.baidu.com/s/1eQoEeeY 密码:x6of

有兴趣的可以瞧瞧。