乐趣区

关于python:超强-Python-数据可视化库一文全解析

明天给大家分享一篇可视化干货,介绍的是功能强大的开源 Python 绘图库 Plotly,教你如何用超简略的(甚至只有一行!)代码,绘制出更棒的图表。

我之前始终守着 matplotlib 用的起因,就是为了我学会它简单的语法,曾经“沉没 ” 在外面的几百个小时的工夫老本。这也导致我破费了不知多少个深夜,在 StackOverflow 上搜寻如何“格式化日期”或“减少第二个 Y 轴”。

但咱们当初有一个更好的抉择了 —— 比方易于应用、文档健全、功能强大的开源 Python 绘图库 Plotly。明天就带你深刻体验下,理解它如何用超简略的(甚至只有一行!)代码,绘制出更棒的图表。

本文中所有代码都曾经在 Github 上开源,所有的图表都是可交互的,请应用 Jupyter notebook 查看。

(plotly 绘制的范例图表。 图片起源: plot.ly)

Plotly 概述

plotly 的 Python 软件包是一个开源的代码库,它基于 plot.js,而后者基于 d3.js。咱们理论应用的则是一个对 plotly 进行封装的库,名叫 cufflinks,它能让你更不便地应用 plotly 和 Pandas 数据表协同工作。

* 注: Plotly 自身是一个领有多个不同产品和开源工具集的可视化技术公司。 Plotly 的 Python 库是能够收费应用的,在离线模式能够创立数量不限的图表,在线模式因为用到了 Plotly 的共享服务,只能生成并分享 25 张图表。

本文中的所有可视化图表都是在 Jupyter Notebook 中应用离线模式的 plotly + cufflinks 库实现的。在应用 pip install cufflinks plotly 实现装置后,你能够用上面这样的代码在 Jupyter 里实现导入:

单变量散布:柱状图和箱形图

单变量剖析图往往是开始数据分析时的规范做法,而柱状图基本上算是单变量散布剖析时必备的图表之一(尽管它还有一些有余)。

就拿博客文章点赞总数为例,做一个简略的交互式柱状图:

(代码中的 df 是规范的 Pandas dataframe 对象)

(应用 plotly+cufflinks 创立的交互式柱状图)

对于曾经习惯 matplotlib 的同学,你们只须要多打一个字母(把 .plot 改成 .iplot),就能取得看起来更加好看的交互式图表!点击图片上的元素就能显示出详细信息、随便缩放,还带有(咱们接下来会提到的)高亮筛选某些局部等超棒性能。

如果你想绘制重叠柱状图,也只须要这样:

对 pandas 数据表进行简略的解决,并生成条形图:

就像下面展现的那样,咱们能够将 plotly + cufflinks 和 pandas 的能力整合在一起。比方,咱们能够先用 .pivot() 进行数据透视表剖析,而后再生成条形图。

比方统计不同发表渠道中,每篇文章带来的新增粉丝数:

交互式图表带来的益处是,咱们能够随便摸索数据、拆分子项进行剖析。箱型图能提供大量的信息,但如果你看不到具体数值,你很可能会错过其中的一大部分!

散点图

散点图是大多数剖析的核心内容,它能让咱们看出一个变量随着时间推移的变动状况,或是两个(或多个)变量之间的关系变动状况。

工夫序列剖析

在事实世界中,相当局部的数据都带有工夫元素。侥幸的是,plotly + cufflinks 天生就带有反对工夫序列可视化剖析的性能。

以我在“Towards Data Science”网站上发表的文章数据为例,让咱们以公布工夫为索引构建一个数据集,看看文章热度的变动状况:

在上图中,咱们用一行代码实现了几件事件:

  • 主动生成好看的工夫序列 X 轴
  • 减少第二条 Y 轴,因为两个变量的范畴并不统一
  • 把文章题目放在鼠标悬停时显示的标签中

为了显示更多数据,咱们能够不便地增加文本正文:

(带有文本正文的散点图)

上面的代码中,咱们将一个双变量散点图按第三个分类变量进行着色:

接下来咱们要玩点简单的:对数坐标轴。咱们通过指定 plotly 的布局(layout)参数来实现这一点(对于不同的布局,请参考官网文档,同时咱们把点的尺寸(size 参数)和一个数值变量 read_ratio(浏览比例)绑定,数字越大,泡泡的尺寸也越大。

如果想要更简单一些(详见 Github 的源代码),咱们甚至能够在一张图里塞进 4 个变量!(然而并不举荐你们真的这么搞)

和后面一样,咱们能够将 pandas 和 plotly+cufflinks 联合起来,实现许多有用的图表:

倡议你查看官网文档,或者源代码,外面有更多的范例和函数实例。只须要简略的一两行代码,就能够为你的图表加上文字正文,辅助线,最佳拟合线等有用的元素,并且放弃原有的各种交互式性能。

高级绘图性能

接下来,咱们要具体介绍几种非凡的图表,平时你可能并不会很常常用到它们,但我保障只有你用好了它们,肯定能让人另眼相看。咱们要用到 plotly 的 figure_factory 模块,只须要一行代码,就能生成超棒的图表!

散点图矩阵

如果咱们要摸索许多不同变量之间的关系,散点图矩阵(也被称为 SPLOM)就是个很棒的抉择:

即便是这样简单的图形,也是齐全可交互的,让咱们能更详尽地对数据进行摸索。

关系热图

为了体现多个数值变量间的关系,咱们能够计算它们的相关性,而后用带标注热度图的模式进行可视化:

自定义主题

除了层出不穷的各种图表外,Cufflinks 还提供了许多不同的着色主题,不便你轻松切换各种不同的图表格调。上面两张图别离是“太空”主题和“ggplot”主题:

此外,还有 3D 图表(曲面和泡泡):

对有趣味钻研的用户来说,做张饼图也不是什么难事:

在 Plotly 图表工坊(Plotly Chart Studio)里编辑

当你在 Jupyter Notebook 里生成了这些图表之后,你将会发现图表的右下角呈现了一个小小的链接,写着“Export to plot.ly(公布到 plot.ly)”。如果你点击这个链接,你将会跳转到一个“图表工坊”。

在这里,你能够在最终展现之前进一步批改和润色你的图表。能够增加标注,抉择某些元素的色彩,把所有都整顿分明,生成一个超棒的图表。之后,你还能够将它公布到网络上,生成一个供其他人查阅的链接。

上面两张图是在图表工坊里制作的:

讲了这么多,看都看累了吧?然而咱们还并没有穷尽这个库的所有性能。限于篇幅,有些更棒的图表和范例,只好请大家拜访 plotly 和 cufflinks 的官网文档去一一查看咯。

(Plotly 交互式地图,显示了美国国内的风力发电场数据。 起源: plot.ly)

最初 ……

对于沉没老本舛误,最蹩脚的一点在于,人们往往只能在放弃之前的致力时,能力意识到本人节约了多少工夫。

在抉择一款绘图库的时候,你最须要的几个性能有:

  • 疾速摸索数据所需的一行代码图表
  • 拆分 / 钻研数据所需的交互式元素
  • 当须要时能够深刻细节信息的选项
  • 最终展现前能轻易进行定制

从当初看来,要用 Python 语言实现以上性能的最佳抉择非 plotly 莫属。它让咱们疾速生成可视化图表,交互性能使咱们更好地了解信息。

我抵赖,绘图相对是数据迷信工作中最让人享受的局部,而 plotly 能让你更加愉悦地实现这些工作。

(用一张图表显示一下用 Python 绘图的愉悦水平随着工夫变动。 起源 towardsdatascience.com)

2022 年是时候降级你的 Python 绘图库了,让本人在数据迷信和可视化方面变得更快、更强、更美吧!

以上就是本次分享的所有内容,如果你感觉文章还不错,欢送关注公众号:Python 编程学习圈,每日干货分享,发送“J”还可支付大量学习材料,内容笼罩 Python 电子书、教程、数据库编程、Django,爬虫,云计算等等。或是返回编程学习网,理解更多编程技术常识。

退出移动版