本文主要是介绍数据可视化工具 Bokeh,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Bokeh 是一款 Python 生态中的数据可视化工具,它是东洋岛国程序员发明的。虽然已经有了很多数据可视化工具,但是 Bokeh 仍然能够有所创新,即使在雷同的功能上,它也能够做到极致,在这方面完全继承了岛国人民的做事风格。
本 Chat 的主要内容:
- Bokeh 的安装和基本介绍;
- 用 Bokeh 绘制常用统计图;
- 用 Bokeh 实现统计图的互动。
数据可视化
数据可视化,在现在非常重要。凭什么这么说?请参阅我在《案例上手 Python 数据可视化》中的详细说明,此处不赘述。
本 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”。
从上述结果来看,与 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()
,用它替代④。执行之后,结果如下图所示。
此后在执行第一段程序,则代码块之下就能插入图示对象。
除了能够绘制一条曲线之外,在同一个坐标系中绘制多条曲线也是很容易的事情。
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)
相对前面的示例,此示例做了更多的自定义。首先是在⑥创建图示实例的时候,使用的参数就比较多了:
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 专享技术内容哦。
这篇关于数据可视化工具 Bokeh的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!