程序员

推荐!用 Python 直接画前端交互式可视化图表

2020-07-04  本文已影响0人  李雨喵

Hi!大家好呀!我是你们努力的喵哥!

今天,给学 Python 的同学们,推荐一个交互式可视化库 Bokeh。交互式可视化主要指的是做数据的图表图形可视化,同时在图表上还能进行展示交互。

很多同学会疑问,matplotlib 可以直接出分析的图表,Seaborn 也能很快分布图、热图、分类分布图等。为什么还要推荐 Bokeh?首先 matplotlib 和 Seaborn 都是基于 numpy 的工具包,而 Bokeh 是专用于可视化的,而且还有自己独立的数据格式。Bokeh 不只是出静态图表,而是动态的,甚至能实现多表联动。

Bokeh特性

1.专门针对Web浏览器的交互式、可视化Python绘图库。

2.可以做出像 D3.js 简洁漂亮的交互可视化效果。

3.独立的HTML文档或服务端程序。

4.可以处理大量、动态或数据流。

5.支持 Python (或Scala, R, Julia…)。

6.不需要使用 Javascript。

安装

安装 Bokeh 有多种方法。官方推荐Anaconda Python发行版,使用 conda 安装。

  • conda install bokeh

    这同时将安装 Bokeh 所需的所有依赖库。Anaconda 可以最大程度地减少在包括 Windows 在内的所有平台上的配置和安装工作。

    如果我们已经安装好了所有依赖,也可以使用 pip 安装。

  • pip install bokeh

    简单例子

    首先,需要从 bokeh.plotting 导入 figure 函数,从而让创建各种类型的图表。我们还从 bokeh.io 导入 show 和 ouptut_notebook 函数 — 这使得能在Notebook中以内联的形式显示结果。

  • from bokeh.plotting import figurefrom bokeh.io import output_notebook, show

    然后,告诉 Bokeh 直接在 Notebook 中显示图表。这将导致所有 JavaScript 和数据直接嵌入到Notebook 的 HTML 中。Bokeh 可以直接输出到HTML文件,或者启动一个 web server。

  • output_notebook()

    然后,使用 Numpy 创建一些简单数据。

  • from numpy import cos, linspacex = linspace(-6, 6, 100)y = cos(x)

    调用Bokeh的figure函数创建一个图表p。然后,调用其circle()方法在每个 X、Y 点处渲染一个红圈。

  • p = figure(width=500, height=500)p.circle(x, y, size=7, color="firebrick", alpha=0.5)show(p)

    该图表生成后,就可以拖动平移,可以进行缩放。在图表的工具栏,还可以调节更多的参数。

    在呈现时,我们也可以调用 save() 将图表输出到一个 HTML 中。

    以上只是 Bokeh 内置的最基础的散点图。大家可以去探索 Bokeh 的其它各类图表。有些图表还非常有趣。

    Bokeh 还有一个独立的 server 模块,用来创建交互式Web应用。可以轻松地把后端数据与精致的 Bokeh 前端可视图表动态连接起来。

    Bokeh server 可用于

    响应浏览器中生成的UI和工具事件,借助Python的全部功能进行计算或查询。

    自动将服务器端数据更新推送给前端图表。

    使用周期定时,超时,和异步回调函数来更新前端数据。

    关于开发和部署Bokeh server应用的更多的细节和信息,请参考官方文档。

    最后

    Bokeh 是由非盈利组织 NumFocus 维护的,已经走过了近七个年头。Bokeh 现在共有400多位贡献者,在 Github 收获了13.4k Star。Bokeh 也被非常多互联网公司使用,支撑着各类数据系统的数据呈现。

    项目地址:https://github.com/bokeh/bokeh

    项目官网:https://bokeh.org

  • 上一篇下一篇

    猜你喜欢

    热点阅读