Bokeh入门(1)
摘录:Bokeh (Bokeh.js) 是一个 Python 交互式可视化库,支持现代化 Web 浏览器,提供非常完美的展示功能。Bokeh 的目标是使用 D3.js 样式提供优雅,简洁新颖的图形化风格,同时提供大型数据集的高性能交互功能。Boken 可以快速的创建交互式的绘图,仪表盘和数据应用
先放一张自己做的图吧:
个人觉得最实用的功能就是保存为图片以及实时拖动了,另外就是重置功能了
前言:如果需要在web页面上展示图像,我想js绝对是不二选择,但是碍于学习成本又不想花太多时间去学js,那么作为一个对python情有独钟的非典型运维人员,当然得找找python强大的支持库了,一共找到了三款,mpld3,pyxley,bokeh,第一款个人觉得不够强大,主要是不能直接在浏览器上保存为图片,pyxley属于较新的python项目,官方自己都说说明文档coming soon!!!然后就选择bokeh了,再者bokeh真的异常的强大,还在慢慢摸索ing
下面是官方文档的入门教程,直接手工翻译的,如有错误还望指正。
参考:http://bokeh.pydata.org/en/latest/docs/quickstart.html#getting-started
Bokeh同时提供强大而灵活的功能,使得用户可以进行非常高阶的个人定制,一方面十分简洁而另一方面,Bokeh根据用户的需要公开不同的等级的接口级别给不同级别的用户:
Bokeh.models是一个相对而言低阶的接口,提供了尽可能多的的灵活性给以应用程序开发人员。
Bokeh.plotting是一个相对而言中阶的接口,主要以视觉图形为中心。
Bokeh.charts是一个相对而高阶接口,用来快速而尽可能简单地构建复杂的统计图。
本次快速入门主要侧重于bokeh.plotting接口
快速安装:
有很多种不同的安装方式安装Bokeh
如果你用的是Anaconda (推荐),用以下的命令通过bash或者windows的命令行就可直接安装了。
conda install bokeh
这种安装方式,Anaconda已经准备了运行Bokeh之前所有需要的所有依赖,这也是Bokeh强烈推荐的安装方式,无论任何平台,包括windows,它都可以将安装成本趋近于零。它也会安装一些例子在examples/目录,即Anaconda安装目录的子目录。
如图:
当然,如果你有绝对的自信解决这些依赖,依赖包括Numpy,pandas及redis等,你也可以用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)
当你执行这个脚本的时候,你将会发现,在当前目录会创建一个”lines.html”的文件,而且浏览器会自动打开一个窗口并展示这个创建的html文件,效果如上图所示。(为了展示效果,所以才会在教程中直接叫结果嵌在这篇文档中)
通过bokeh.plotting接口创建图像的基本步骤如下:
1.准备数据(如这个例子中的lise列表)
2.告诉Bokeh将文件输出的位置(这个例子中用的是output_file(),并制定”lines.html”作为文件名保存)
3.调用figure()去创建图形,并设置一些全体的参数,如标题,工具,轴标签等。
4.为数据添加渲染器(这个例子中的Figure.line),并加入一些可视化的定制,比如颜色,图标以及这个图形的宽度等
5.让Bokeh去show()或者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)
很好看,有没有
后记:搜了一下51cto的视频学院,不管是免费的还是收费的,居然都没有数据分析的课程,虽然自不量力,但是也希望在51CTO上录一个通过numpy,matplotlib,pandas的数据分析课程,一方面借鉴国外视频的先进经验,一方面也整理下自己的心得。这里有个不错的视频教程,关于pandas的,但是全英文的。
链接:http://pan.baidu.com/s/1eQoEeeY 密码:x6of
有兴趣的可以瞧瞧。