6.2 Bokeh
与Matplotlib不同,Bokeh是一款针对浏览器中图形演示的交互式绘图工具。它的目标是使用d3.js样式提供优雅、简洁新颖的图形化风格,同时提供大型数据集的高性能交互功能。Bokeh支持用户快速创建交互式的绘图、仪表盘和数据应用。这对于喜爱d3.js的可视化效果,但不熟悉JavaScript的用户有莫大的帮助。因此,在使用IPython Notebook进行编程时,能将Bokeh的交互体验提升至最大。
其最新的官方文档为http://bokeh.pydata.org/en/latest/index.html 。同样,它也为用户提供一个精彩的“画廊(Gallery)”以展示基础的例子,如图6-6所示。
图6-6 Bokeh画廊剪影
在此,我们利用一段完整的代码来体验使用Bokeh画图的效果,如代码清单6-5所示。
代码清单6-5 绘制简单折线图
# -*- coding:utf-8 -*- from bokeh.plotting import figure, output_file, show x = [1, 2, 3, 4, 5] y = [6, 7, 2, 4, 5] # 输出为静态文件 output_file("lines.html", title="line plot example") # 创建一个 figure对象,附带标题和坐标轴标记 p = figure(title="simple line example", x_axis_label='x', y_axis_label='y') # 添加一条线,设置图例 p.line(x, y, legend="Line A.", line_width=2) show(p)
*代码详见:示例程序/code/6-2.py
当运行代码之后,脚本会自动打开默认的浏览器以展示结果,图6-7便是截自浏览器界面。读者可以使用鼠标滑动以放大或缩小图形的比例,还可以拖动图形至合适的位置。更重要的是,使用右上角的功能按钮进行更多样的交互,包括放大、复位、保存、调试帮助等。
图6-7 绘制简单折线图
在画廊页面[1] 中,有非常多生动的交互式例子。例如,交互式的电影检索工具,如图6-8所示(具体链接是http://demo.bokehplots.com/apps/movies )。
我们可以通过左边预设的过滤器(Filter)来改变右边图像的样式和内容。过滤器包括:最小电影评论数、票房、首映时间、奥斯卡奖杯数等。可见,当前有7447部电影被展示在图6-9中。我们将“最小电影评论数”提高到250,以寻找一些经典好片,得到2000年到2014年的49部经典电影。
图6-8 Bokeh应用之一
图6-9 过滤后的电影
将鼠标悬停到某一个具体的点上,交互式响应将显示出这个点对应的电影名称、首映时间和票房信息。图6-9中的是2012年上映的《饥饿游戏》,官方票房统计高达4亿美元。
可视化的目的是汇总数据,展示信息。而交互式绘图能够让信息在合适的时机才出现。这种交互体验优于Matplotlib,但这意味着开发者要进行更多的准备工作,以支持用户可能的行为。如果仅为绘制简单的统计图表,Matplotlib将更加高效。
[1] Bokeh画廊网页http://bokeh.pydata.org/en/latest/docs/gallery.html
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论