08-选择适合你的Python可视化工具

选择适合你的Python可视化工具

08-选择适合你的Python可视化工具

Python 可视化工具全景图

R的可视化工具包ggplot2为R的流行起到了很好的推动作用。常有人拿这个与Python作比较,认为可视化是Python相对于R的短板。

其实我以为,恰恰是Python的可视化生态过于“丰富”,丰富到有点让人无所适从:

  • 这些库各有长短、各有侧重,常常不知如何选择;
  • 似乎又都有一些不如人意的地方,让初学习者常换工具,浪费了太多的时间和精力。

所以,本篇将:

  1. 系统地分析一下Python可视化工具的生态;
  2. 对一些重要的工具进行一些简单地介绍;
  3. 最后给出一些如何根据自己的情况选择合适的一两个Python可视化工具的建议。

Python工具知多少?

根据PyViz的登记,目前共有 68 个Python可视化工具(库、包)。其中有11个的作者已不再开发或认可。仍在开发维护的工具有57个之多。前面的图展示了其中目前仍在维护的主要工具。

这么多可视化工具,初看起来确实令人生畏。

对这些工具进行一下归类比较,有助于我们做出合适的选择。

计算机绘图世界的等级制度

**注意:**这是一个草根为自己总结的!

一级,硬件级

计算机绘图世界有两个接近硬件级的底层库,或者叫规范、标准:

  • OpenGL,通用的
  • Direct3,windows系统上的

一般的显卡制造商基于它们编写显卡(图形)驱动程序。

二级,程序开发语言级

程序开发语言,在底层调用相对低级的图形库,提供一套高级一点的API供程序员使用。如,Python中的PyQtGraph,2D图形使用Qt的GraphicsView框架,3D图形使用OpenGL。

一般情况下,程序开发人员才会直接使用它们。

三级,绘图软件(库、包)级

绘图时直接使用的库和包,如matplotlib,调用Python的PyQtGraph。但一般使用人员都是直接使用matplotlib提供的API接口(函数,对象等)。

需要绘图、可视化的人员使用;做二次开发的人员使用。

四级,二次开发和封装

在三级库包的基础上再开发、封装,如基于matplotlib做二次开发、封装的plotnine、seaborn等。实际上matplotlib的pyplot模块也就是mpl核心对象的封装函数集。

主要用于快速绘图、可视化工作。

IEEE 的 SciVis 和 InfoVis 组

IEEE组织习惯于将Python可视化工具分为两个组:

一是:Scientific Visualization (SciVis) ,科学可视化。主要基于OpenGL图形标准,提供三维或四维物理过程的图形密集可视化,侧重于工程和科学环境。常见的这类Python可视化工具有VisPy, glumpy, GR, Mayavi等。

如使用 VisPy 库绘制螺旋星系图。

08-选择适合你的Python可视化工具

螺旋星系图

二是:Information Visualization (InfoVis) ,信息可视化。专注于任意空间中信息的可视化,而不一定是三维物理世界。InfoVis组的库使用打印页面或计算机屏幕的两个维度来抽象、解释空间,通常使用轴和标签。常见的Python这类库有,pandas, NetworkX, Cartopy,ggplot, plotnine, HoloViews, GeoViews,seaborn等。

InfoVis组的细分

我等草根很少需要去使用SciVis组的可视化工具,99%都在InfoVis组选择。

可以根据库的基础语言、等级、应用场景等,InfoVis组的库可以进一步细分为若干个子组:

08-选择适合你的Python可视化工具

  • Matplotlib: 最古老,也是最受欢迎的InfoVis库之一,具有广泛的2D绘图类型和输出格式。使用桌面GUI工具包(如Qt和GTK)库,重点放在静态图像以及交互式图形上。也对3D提供了一定的支持,但有一些限制。
  • 基于matplotlib:多年来,基于Matplotlib二次开发,构建了各种工具。目的有:用于特定类型数据的渲染引擎,用于特定领域(如Pandas中的绘图对DataFrame的支持),或提供更高级别的API以简化绘图步骤(如ggplot, plotnine),或者特定用途(如seaborn的统计绘图)等。
  • JavaScript,及基于JavaScript的库。
  • JSON,基于JavaScript的D3.js库。
  • WebGL,基于WebGL标准的Web绘图。
  • **其他,**提供一些特殊的、补充功能的库,如用于可视化网络的graphviz。

根据等级关系分类

根据库在Python可视化生态中所处的位置、领域、状态,可以将68个Python可视化工具分为以下12类:

08-选择适合你的Python可视化工具
其中休眠状态的库有11个,原则上不应选择这些库。

为了有一个合适的篇幅,将在下篇中接着讨论:

  • Python重要库的介绍;
  • 如何选择适合你的Python可视化工具;
  • 我为什么选择Matplotlib。

(This end)