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

我之前一直守着 matplotlib 用的原因,就是为了我学会它复杂的语法,已经“沉没"在里面的几百个小时的时间成本。这也导致我花费了不知多少个深夜,在 StackOverflow 上搜索如何“格式化日期”或“增加第二个Y轴”。

但我们现在有一个更好的选择了 —— 比如易于使用、文档健全、功能强大的开源 Python 绘图库 Plotly。今天就带你深入体验下,了解它如何用超简单的(甚至只要一行!)代码,绘制出更棒的图表。

文章目录

  • 技术提升
  • Plotly 概述
  • 散点图
  • 时间序列分析
  • 高级绘图功能
  • 散点图矩阵
  • 关系热图
  • 自定义主题
  • 在 Plotly 图表工坊(Plotly Chart Studio)里编辑

技术提升

本文由技术群粉丝分享,项目源码、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

方式①、添加微信号:dkl88191,备注:来自CSDN +研究方向
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

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 里完成导入:

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

单变量分析图往往是开始数据分析时的标准做法,而柱状图基本上算是单变量分布分析时必备的图表之一(虽然它还有一些不足)。

就拿博客文章点赞总数为例(原始数据见 Github:https://github.com/WillKoehrsen/Data-Analysis/tree/master/medium ),做一个简单的交互式柱状图:

(代码中的 df 是标准的 Pandas dataframe 对象)

(使用 plotly+cufflinks 创建的交互式柱状图)

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

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

对 pandas 数据表进行简单的处理,并生成条形图:

就像上面展示的那样,我们可以将 plotly + cufflinks 和 pandas 的能力整合在一起。比如,我们可以先用 .pivot() 进行数据透视表分析,然后再生成条形图。

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

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

散点图

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

时间序列分析

在现实世界中,相当部分的数据都带有时间元素。幸运的是,plotly + cufflinks 天生就带有支持时间序列可视化分析的功能。

以我在“Towards Data Science”网站上发表的文章数据为例,让我们以发布时间为索引构建一个数据集,看看文章热度的变化情况:

在上图中,我们用一行代码完成了几件事情:

  • 自动生成美观的时间序列 X 轴

  • 增加第二条 Y 轴,因为两个变量的范围并不一致

  • 把文章标题放在鼠标悬停时显示的标签中

为了显示更多数据,我们可以方便地添加文本注释:

(带有文本注释的散点图)

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

接下来我们要玩点复杂的:对数坐标轴。我们通过指定 plotly 的布局(layout)参数来实现这一点(关于不同的布局,请参考官方文档 https://plot.ly/python/reference/ ),同时我们把点的尺寸(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)”。如果你点击这个链接,你将会跳转到一个“图表工坊”(https://plot.ly/create/)。

在这里,你可以在最终展示之前进一步修改和润色你的图表。可以添加标注,选择某些元素的颜色,把一切都整理清楚,生成一个超棒的图表。之后,你还可以将它发布到网络上,生成一个供其他人查阅的链接。

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

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

最后 ……

关于沉没成本谬误,最糟糕的一点在于,人们往往只能在放弃之前的努力时,才能意识到自己浪费了多少时间。

在选择一款绘图库的时候,你最需要的几个功能有:

  • 快速探索数据所需的一行代码图表

  • 拆分/研究数据所需的交互式元素

  • 当需要时可以深入细节信息的选项

  • 最终展示前能轻易进行定制

从现在看来,要用 Python 语言实现以上功能的最佳选择非 plotly 莫属。它让我们快速生成可视化图表,交互功能使我们更好地理解信息。

我承认,绘图绝对是数据科学工作中最让人享受的部分,而 plotly 能让你更加愉悦地完成这些任务。

2022年是时候升级你的 Python 绘图库了,让自己在数据科学和可视化方面变得更快、更强、更美吧!

这是一款功能强大的开源 Python 绘图库相关推荐

  1. 功能强大、文档健全的开源 Python 绘图库 Plotly,手把手教你用!

    公众号 "菜鸟学Python", 设为 "星标" 和30w+一起学Python! 译者:欧剃 https://towardsdatascience.com/th ...

  2. 一款功能强大的开源excel在线表格

      大家好,我是小编南风吹,每天推荐一个小工具/源码,装满你的收藏夹,让你轻松节省开发效率,实现不加班不熬夜不掉头发!   今天小编推荐一款纯前端类似excel的在线表格,功能强大.配置简单.完全开源 ...

  3. 一款功能强大的 IP 查询工具!开源,放心用

    Fav-up Fav-up 是一款功能强大的IP查询工具,该工具可以通过Shodan和Favicon(网站图标)来帮助研究人员查询目标服务或设备的真实IP地址. 工具安装 首先,该工具需要本地设备安装 ...

  4. 【开源】高颜值 功能强大的开源Markdown编辑器

    开源最前线(ID:OpenSourceTop) 猿妹编译 地址:https://github.com/notable/notable Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简 ...

  5. AntiSpy:一款功能强大的反病毒反Rootkit免费工具套件

    AntiSpy是一款免费但功能强大的反病毒与反rootkit工具套件,该工具可以给安全研究人员提供最高级别的权限来帮助我们检测.分析和恢复各种内核修改以及钩子设置.这样一来,在AntiSpy的帮助下, ...

  6. cmd命令不识别exp_GRAT2:一款功能强大的命令amp;控制(C2)工具

    GRAT2GRAT2是一款功能强大的命令&控制(C2)工具,该工具出于教育目的开发和设计,GRAT2采用Python3编程语言开发,客户端基于.NET 4.0实现.GRAT2的作者之所以开发G ...

  7. php在线编辑器_8款功能强大的Java编辑器,建议收藏!「渡一教育」

    作为一名合格的程序员,每天打交道最多的除了手机,恐怕就是编辑器了,需要花费大量的时间投身于代码的海洋中,使用各种不同的IDE来开发代码. 对于程序员们来说,一款好用的编辑器,需要像自己的左右手一样.一 ...

  8. 增强 扫描王 源码_BlueScan:一款功能强大的蓝牙扫描器

    BlueScan BlueScan是一款功能强大的蓝牙扫描器,广大研究人员可以使用BlueScan来扫描BR/LE设备.LMP.SDP.GATT以及相关的蓝牙漏洞. 考虑到目前社区中针对蓝牙安全方面的 ...

  9. 一款功能强大的代理检查和IP地址轮转工具

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 作者:Alpha_h4ck,转载于freebuf 关于mub ...

最新文章

  1. 学习C#要养成的好习惯
  2. 什么是视频编码(Codec)?
  3. RSA加密-解密以及解决超长内容加密失败解决
  4. 云免流控服务器响应失败,云免流服务器是否违法
  5. MATLAB R2021b for Mac(可视化数学分析软件)
  6. 【Coursera】DNS加速器
  7. java字节流字符流复制文件大小不一致及乱码
  8. AD7705在STM32F103RBT6上的移植[硬件SPI]
  9. flash activex java_Adobe Flash player ActiveX下载地址
  10. 蓝桥杯青少年创意编程大赛题解:STEMA
  11. 两台电脑通过网线互联进行文件共享
  12. 历史上的今天:“计算机之父”争夺战;Microsoft Excel 诞生;百度推出百度地图...
  13. 融创孙宏斌:我们现在是安全第一|一点财经
  14. 页面文件太小,无法解决/BrokenPipeError: [Errno 32] Broken pipe问题解决
  15. Someone‘s Acting Sus....
  16. 正则表达式匹配任意字符(包括换行符)
  17. 静态变量(static variable)
  18. 怎样把ppt图片完整的转换成pdf
  19. dwz php 联动,PHP利用DWZ.CN服务生成短网址
  20. linux 卸载x264,问一些linux下x264编码的问题

热门文章

  1. python : pandas 中多重索引multiindex与多个标的dataframe
  2. MySQL架构 数据库(1)
  3. 8.10 12.1-12.5
  4. c语言scandf用法,scan的用法总结大全
  5. office online server2016详细安装步骤及问题总结
  6. C语言常用语句之-循环语句
  7. 常用工具软件-官网下载地址
  8. 防火墙安全策略防火墙安全区域的划分
  9. 去除数字的正则表达式
  10. 用Java实现的eChat聊天服务器