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的命令行就可直接安装了。
1
|
conda
install
bokeh
|
这种安装方式,Anaconda已经准备了运行Bokeh之前所有需要的所有依赖,这也是Bokeh强烈推荐的安装方式,无论任何平台,包括windows,它都可以将安装成本趋近于零。它也会安装一些例子在examples/目录,即Anaconda安装目录的子目录。
如图:
当然,如果你有绝对的自信解决这些依赖,依赖包括Numpy,pandas及redis等,你也可以用pip安装
1
|
pip
install
bokeh
|
Note
通过pip方式安装,不会安装这些例子,不过可以通过git clone 下载这些例子(examples/)。
入门指南
Bokeh是一个公开很多能力的大型库,所以这一部分只是一个关于Bokeh常见实用案例以及工作流程的快速的导航。更多的细节请查阅完整的用户指导
下面通过一些实例开始。
用python基本数据类型list的一些数据画一个线状图,并包括缩放(zoom),区域选择(pan),调整尺寸(resize),保存(save)等工具,是一个简答又直接的方式。
注:建议使用ipython notebook,如果不了解,去了解一下吧
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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),并加入一些可视化的定制,比如颜色,图标以及这个图形的宽度等
其中步骤3,4可以重复创建不止一个图形,详情见下面的其他实例。
该bokeh.plotting接口也非常便利,如果我们需要在输出更多的一些自定义的数据序列,图标,指数轴线等。它当然也可以非常简单的组合多个图标在一张图形上,如下图所示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
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的,但是全英文的。
Learning Python for Data Analysis
链接:http://pan.baidu.com/s/1eQoEeeY 密码:x6of
有兴趣的可以瞧瞧。