数据可视化工具 Bokeh

Bokeh 是一款 Python 生态中的数据可视化工具,它是东洋岛国程序员发明的。虽然已经有了很多数据可视化工具,但是 Bokeh 仍然能够有所创新,即使在雷同的功能上,它也能够做到极致,在这方面完全继承了岛国人民的做事风格。

本 Chat 的主要内容:

  1. Bokeh 的安装和基本介绍;
  2. 用 Bokeh 绘制常用统计图;
  3. 用 Bokeh 实现统计图的互动。

数据可视化

数据可视化,在现在非常重要。凭什么这么说?请参阅我在《案例上手 Python 数据可视化》中的详细说明,此处不赘述。

数据可视化工具 Bokeh_第1张图片

本 Chat 是选择了上述课程中的一部分,供有单独需要的朋友享用。

Bokeh 简介

岛国,在我朝的东边,我朝臣民对它的心态可以说比较复杂了。就软件领域而言,它的存在感貌似不大,其实不然。就拿国内的一些大厂,有不少其背后会有一家岛国公司身影——软银。岛国技术人员为开源领域的贡献,也同样精彩,比如很有名的 Ruby 语言,发明者为 Yukihiro Matsumoto,是一名岛国程序员。本章要介绍的Bokeh也是岛国程序员发明的,专用于数据可视化。

维基百科的词条 Bokeh 介绍了这个词的读音和含义,也可以不用理会什么含义,就当做一个名称罢了。

精彩一瞥

Bokeh 的最大特点是能够生成基于网页的可视化图示,并且也具有交互性。

起手要做的肯定是安装了。

pip3 install bokeh

这是最简单的安装方式,如果不能安装,可以直接从 github 上下载。

安装好之后,可以运行jupyter notebook,而后执行下面的程序,通过示例体验一下 Bokeh 的应用。

import numpy as npfrom bokeh.plotting import figure, output_file, show    # ①x = np.linspace(0, 2*np.pi, 50)y = np.sin(x)fig = figure(plot_width = 800, plot_height = 600,              title = 'sin line',              y_axis_label = 'y', x_axis_label = 'x')    # ②fig.line(x, y, line_width = 2, legend = 'sin')    # ③output_file('./sin.html')    # ④show(fig)    # ⑤

执行这段程序之后,会自动打开一个网页,并且网页文件的名称为“sin.html”。数据可视化工具 Bokeh_第2张图片

从上述结果来看,与 Plotly 和 Pyecharts 一样——关于这两个工具的介绍,请参阅我的课程,当然,应该也会有自己的特点,继续体会就能了解到。不过,还是先简要地理解一下上面的程序。

  • ①引入程序中需要的模块。
  • ②中使用figure创建一个图示实例对象,figure其实是Bokeh中的类Figure的简单封装,用于初始化图示对象,默认情况下会包含坐标系的坐标轴、坐标网格以及图示右侧的有关工具等。
  • ③调用了fig对象的一个方法fig.line,意即绘制曲线。
  • ④使用output_file设置输出文件名称,如果不写此句,Bokeh 会默认一个名称。
  • ⑤的效果则是要显示所绘制的图示对象。

Plotly 和 Pyecharts 都能将 HTML 中的图嵌入到当前正在运行的 Jupyter 浏览器中,Bokeh 有这个功能吗?

这个可以有!

from bokeh.io import output_notebookoutput_notebook()

引入output_notebook之后,执行output_notebook(),用它替代④。执行之后,结果如下图所示。

数据可视化工具 Bokeh_第3张图片

此后在执行第一段程序,则代码块之下就能插入图示对象。

除了能够绘制一条曲线之外,在同一个坐标系中绘制多条曲线也是很容易的事情。

from bokeh.plotting import figure, showx = [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]p = figure(tools="pan,box_zoom,reset,save",    # ⑥           y_axis_type="log",            y_range=[0.001, 10**11],           title="多函数曲线",           x_axis_label='sections',            y_axis_label='particles',)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.square(x, y1, legend="y=10^x", fill_color="red", line_color="blue", size=10)    # ⑨p.line(x, y2, legend="y=10^x^2", line_color="orange", line_dash="4 4")show(p)

数据可视化工具 Bokeh_第4张图片

相对前面的示例,此示例做了更多的自定义。首先是在⑥创建图示实例的时候,使用的参数就比较多了:

  • tools="pan,box_zoom,reset,save":前面示例的图示右侧,默认把所有可以出现的工具都显示了出来,而这里仅仅显示指定的工具。
  • y_axis_type:设置Y轴的数据类型,同样的还有参数x_axis_type。默认值是'auto',此外还可以为'linear', 'datetime', 'log', 'mercatro'

⑦绘制y = x的曲线,这跟前面示例一样。⑧则是根据x的值以及函数y = x得到的y值,绘制相应的坐标“点”,只是这里的“点”的形状是“圆形”——用p.circle实现:

  • size:每个“点”的大小(直径)。
  • fill_color:每个“点”的填充色。

与⑧具有同样功能的是⑨,区别在于⑨把“点”绘制成了方形——p.square,其中的参数,可依据“望文生义”原则理解。

总览上述制图过程,如果在同一个图示对象中绘制多种图像,只需要使用该对象多次调用相应的制图方法即可。

基本要素

通过上面的两个示例,已经对Bokeh绘图有了初步感受,正如本章标题中所言“岛国薄纱”,对于学习者而言,因为有了前面使用各种工具的基础,再学习 Bokeh 就不困难了,它只不过是一层“薄纱”罢了,通过简单示例就已经能看到某些了——如果要深入,还需要继续研习,必须动手“拨云”,才能最终“见日”。

通常而言,Bokeh 制图的基本要素或者基本步骤为:

图示对象

前面的示例中已经显示,都是要先创建图示对象。bokeh.plotting中有创建图示图像的类Figure,并且还提供了相应的简化函数figure。创建图示对象常用参数如下:

  • tools:字符串。用于设置图示对象中提供的工具(称为“图示工具”)。默认值为'DEFAULT_TOOLS',前面示例中演示了设置为其他值的情况。此外,还可以通过toolbar_location参数设置图示工具的位置('above', 'below', 'left', 'right')。更多关于图示工具的配置说明,请参阅:Configuring Plot Tools。

  • x_range, y_range:分别设置X轴和Y轴的数值范围。

  • x_minor_ticks, y_minor_ticks:默认值'auto',设置各X轴或者Y轴主刻线之间的副刻线数量。

  • x_axis_location:设置X轴的位置,默认值`'below',即X轴在图示的下方。

  • y_minor_ticks:设置Y轴的位置,默认值'left'

  • x_axis_label, y_axis_label:设置对X轴和Y轴的描述。

  • x_axis_type, y_axis_type:设置X轴或者Y轴的数据类型,前面示例中已经解释。

  • 针对交互操作中鼠标动作的参数设置,主要有active_drag, active_inspect, active_scroll, active_tap,它们的默认值都是'auto',可以根据需要,对这些值进行修改(通常修改较少),具体可以参阅官方文档中有关说明。

图线模型

Bokeh 提供了多种制图模型—— Bokeh 中将这些称为 glyphs ,并且,在 Figure 类的实例对象——即“图示对象”的方法中,提供了相应的接口,以在图示对象中实现各种图线模型。对各种方法的说明,请参阅官方文档。

这里姑且简要介绍,更深入的内容,还待后续内容。或者到本文开始所推荐的课程中学习。


本文首发于 GitChat,未经授权不得转载,转载需与 GitChat 联系。

阅读全文: http://gitbook.cn/gitchat/activity/5c7a374ebaf8e549dac5311a

您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

FtooAtPSkEJwnW-9xkCLqSTRpBKX

你可能感兴趣的:(数据可视化工具 Bokeh)