返回介绍

6.2 Bokeh

发布于 2024-01-21 22:13:25 字数 2319 浏览 0 评论 0 收藏 0

与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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文