值得细细品味的七种python可视化工具库

写在前面

新的一周已经结束尾声,一句字总结本周:累!不过写作一事总是不能放下,小编将一如既往地和大家一起前行。上期文章中,小编和大家谈了ggplot2的图层语法,相对来说比较枯燥(理论的东西一直以来都比较枯燥,即使小编也无法避免此类情形),然而那期文章却对ggplot2的基本图层语法进行了俯瞰式介绍,为实战绘图打下了基础。本来准备在这期文章中给大家谈一下机器学习中的朴素贝叶斯算法,但是考虑到这篇文章也主要表现为理论与程序,所以为了不使各位出现审美疲劳,最重要的是为了不使各位陷入枯燥之所,暂时打算将这篇机器学习的文章放在周末进行介绍,本期文章小编准备讲一个比较欢快的主题,顺便也让劳累的小编放松一下。这期文章,小编将和大家聊一下python中的六种数据可视化工具,以便为各位的绘图实践提供更多可能性。废话不再多说,下面正式开始。

正式进入前再说两句

提到python中的数据可视化工具,相信了解python的朋友或者看过小编文章的志同道合者定然会条件反射般说出matplotlib这一神级库。然而可能令各位想不到的是,小编在这里即将介绍的六种可视工具却是不包含matplotlib绘图库的,至于原因主要有两点:其一,matplotlib与其说是一种绘图工具,倒不如说是一种绘图体系,基于它相继诞生了很多高效简介的绘图库,所以我更加希望将matplotlib作为一种绘图系统进行说明,而不是将它作为单一的绘图工具;其二,宋子(宋小宝)曰:雨露均沾。因为小编对matplotlib库的偏爱,故在文章写作框架中专门开辟出了一个系列用来介绍matplotlib,所以这里介绍python中的绘图库时自然要予以冷淡处理,不然小编就不是偏爱,而是独宠了。而本文小编准备介绍的六种python可视化工具主要包括:

pandas

seaborn

ggplot

pdvega

altair

bokeh

plotly

前五个库主要用于绘制静态图表,后两个库用来绘制交互式图表,俗称动图或网页图表。其中的pandas绘图体系以及seaborn绘图体系皆继承于matplotlib。下面介绍中,小编将采用程序+图表的形式进行,同时辅之文字解释。为了比较各种绘图工具绘图效果,小编在后面的绘图中会采用相同数据集,即著名的记载鸢尾花相关特征的iris数据集,这个数据集可以从多种地方获得,小编这里是从vega_datasets中获得该数据集,如果你还没有听说过这个数据集或者说你尚未安装vega_datasets库,那么小编建议你安装这个库,如果你觉得麻烦,请点击这里下载(公众号中无法获得数据链接,请移步小编博客www.liupu.top),你也可以在公众号中留下地址让小编发送给你,不过小编不建议你们这么做。另外小编将使用这个数据集中的花萼长度和宽度数据进行散点图绘制。在开始各个绘图工具介绍之前,小编想做一些基础准备,即导入数据集。

iris数据集展示

下面正式开始各种绘图工具的介绍。

pandas

你没看错,这里小编所写的正是pandas,是那个用于数据分析的高效库,不过pandas之所以受欢迎绝不仅仅因为其高效的数据分析与处理能力,它同时也能够快速地实现数据可视化。pandas可视化的语法源自于matplotlib,因此使用pandas绘图,你会感觉到自己只是换了一种方式操作matplotlib罢了。下面见程序和图形展示。

pandas绘制散点图示例

绘图程序中的第一行代码用来进行散点图绘制,并将其存放在iris_plot01对象之下,后两行命令用来获得绘制的图形并将其保存在磁盘中以方便后续使用。这里有两点需要说明,当然也是对后面几个绘图工具绘图时的说明:其一,小编不将深入各个绘图工作的语法之中,只是简要绘制出散点图;其二,小编默认各位已经安装了这些绘图库,如尚未安装可以在决定好使用哪种绘图库之后再进行安装,如遇安装问题可以给小编留言。

seaborn

如果你在python下只是想进行静态图的绘制,那么seaborn绝对可以说是你的首选。seaborn库是python中的一个基于matplotlib库开发的简便库,它简化了使用matplotlib库绘制图表的流程,因此在诞生之后变得到广泛使用。下面小编就和大家一起粗略地看一下它的绘图语法与绘图效果。

seaborn绘制散点图示例

图形的字体显示以及图形的色彩显示,这些都是seaborn在考虑到数据的特征后自动予以显示的,省却了你很多图形格式设置时间。除此之外,seaborn最令人向往的优势是它其中设置的多种图形背景,seaborn中的绘图背景已经完全可以满足你的工作需要。

ggplot

这个库相信看过小编文章的朋友不会有丝毫陌生吧,这个库就是R语言中的那个申请的python化库,不过相对于ggplot2仍然存在劣势,不过这里小编可不打算去阐述这其中的不同,小编这里仅仅展示一下怎么自python中使用这个库去快速绘制图形。如果你看过小编前面的文章,你会发现python中的ggplot库的操作语法形式和R语言中的ggplot2操作语法形式很像,下面见实例。

ggpot绘制散点图示例

相对于前面两种绘图工具,使用ggplot库进行图形绘制时,没有对绘图背景进行设置,这个是源自于ggplot默认的绘图背景已经很美观,除非你对背景颜色有偏好或者说你有爱丑的癖好,不然一般很少会去进行背景设置的。

pdvega

这个库小编在之前的系列文章中以及介绍过,而且介绍了使用这个库如何绘制常用的六种商务图表,如果没有印象,可以去看一下小编前期的文章,相信在哪里你会对这个库的绘图语法以及绘图便捷性有一个更深的了解。这里仅仅以散点图为例进行一下展示。

的确需要怀疑人生了,仅仅需要两条语句就可以完全完成基本图形的绘制,其实使用pdvega进行绘图很多时候使用的语句总数真的就只在5句以内。

altair

了解了pdvega,自然要了解一下pdvega的师兄altair,这两个库是同一个牛人所创建的,只不过altair功能更加强大,当然就伴随着稍微复杂一点的语法。正是因为较为复杂的语法,本库的作者猜着实开发了一个更加简洁的版本pdvega。不过你如果希望使用这套语法绘制更加复杂以及个性化的图形,那么相对pdvega,你只能选择altair。下面就来了解一下这个绘图库的语法。

altair绘制散点图示例

它和pdvega一样,都内置好了绘图背景,所以在使用时你不再需要另外指定绘图背景,初次之外使用这两个库进行图形的绘制会直接弹出保存按钮,不需要你在另外使用命令进行图形保存,这个功能对小编来说有点多余,但是对于菜单操作爱好者无疑是一个很好的消息,所以可以进行一下尝试。

bokeh

上面介绍的五种绘图工具主要表现为静态作图,然而很多时候工作中需要动图,或者说做一些交互式图形,为了实现这种功能,小编下面介绍的两个库就完全派上用场了。当然小编无法将这种交互式的图形放置在文中之中,所以仅用它们的静图予以展示。小编这里想介绍一个依赖于python的绘图库bokeh,后面介绍伟大的plotly绘图体系。

bokeh绘制散点图示例

特别需要注意的就是绘图变量需要先转换成列表形式,这一点一定要注意,不然是无法绘制出图形的。另外可以通过运行这段代码生成网页文件,在网页上查看图形才能发现其交互形态。

plotly

上面介绍了bokeh这一交互式图形绘制工具,下面介绍交互式绘图中的绝对王者plotly,有一点一定要注意,plotly可不单纯是一个python库,它是一个交互式图形绘制系统,当然更加是一个图形绘制解决服务商,所以使用plotly绘制交互式图形对于小编来说一直是首选,下面看下例子。

plotly绘制散点图示例

这个体系庞大复杂,然而却又方便快捷,因此掌握这个库以及相应的plotly体系,对于进行交互式图形的绘制绝对是一大裨益。

后记

本文讲到这里就暂时告一段落了,本期文章对python中七种可视化工具进行了简要介绍,其中五种用于静态图形绘制,另外两种用于交互式图形绘制。通过介绍,小编希望各位能够选定自己喜欢的库,切记不要贪多,在这方面小编的建议是,绘制静态图的话请掌握pandas和seaborn,pandas用于快速分析作图,而seaborn用于图形的美化;而在交互式图形方面,小编建议使用plotly。当然使用pandas和seaborn的前提是你对matplotlib库有所了解,所以一定要定期阅读小编的文章呀。下期文章小编将介绍一下机器学习中的朴素贝叶斯算法,敬请期待。再次感谢你们的支持与鼓励,你们的陪伴是小编前进的动力!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180621G248ZJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券