Python Plotly交互可视化详解

2023-12-19

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

“沉没成本谬误”是人们常犯的几种认知偏差之一:由于在某件事上已经投入了(“沉没”)太多的成本,即使这件事已经注定要失败,人们倾向于继续投入更多的时间和金钱。

比如,在不好的职位上待了比正常更长的时间,在一个明显不可能的项目上埋头苦干,以及(你猜的没错)继续用一个陈旧、枯燥的绘图库——matplotlib——即使已经有了更高效、更美观、可互动性更好的替代品了。

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

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

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

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

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

就拿博客文章点赞总数为例(原始数据见 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 的官方文档去一一查看咯。

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

---------------------------END---------------------------

题外话

感谢你能看到最后,给大家准备了一些福利!

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。


???? CSDN大礼包????: 全网最全《Python学习资料》免费赠送????! (安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img

二、Python兼职渠道推荐 *

学的同时助你创收,每天花1-2小时兼职,轻松稿定生活费.
在这里插入图片描述

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

???? CSDN大礼包????: 全网最全《Python学习资料》免费赠送????! (安全链接,放心点击)

若有侵权,请联系删除

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python Plotly交互可视化详解 的相关文章

随机推荐

  • 这5个“计算机专业”就业很吃香,毕业生需求量大,还不会过时

    其实男生 尤其是理科生在选择专业的时候 如果实在是不知道该选择什么样的专业 可以推荐报考计算机类专业 因为大部分的男生其实对计算机类专业都不会怎么排斥 即便是有些课程不喜欢 但一些比较重要的专业课多数也不会真的讨厌 尽管计算机类专业对数学和
  • Axure之中继器的使用(交互&动作&reperter属性&Item属性)

    目录 一 中继器的基本使用 二 中继器的动作 增删改查 2 1 新增 2 2 删除 2 3 更新行 2 4 效果展示 2 5 模糊查询 三 reperter属性 在Axure中 中继器 Repeater 是一种功能强大的组件 用于 创建重复
  • 70个python练手项目 下载,python入门练手小程序

    大家好 小编来为大家解答以下问题 70个python练手项目百度网盘 70个python练手项目 下载 今天让我们一起来看看吧 今天博主给大家带来了一份大礼 Python爬虫70例 以及完整的项目源码 本文下面所有的爬虫项目都有详细的配套教
  • 公抓抓:批量获取企业工商信息的办法

    网站产生数据的作用 企业公示系统的数据 目前网络上每天都有海量数据诞生 这些数据蕴含着巨大的价值 很多时候企业和政府都需要大量的企业数据用于自身的运营 分析等 这些时候往往需要全面的数据才能得出更加客观的结论 比如金融机构在进行业务合作时
  • python——异常机制及常见异常汇总

    异常机制本质 异常指程序运行过程中出现的非正常现象 例如用户输入错误 除数为零 需 要处理的文件不存在 数组下标越界等 所谓异常处理 就是指程序在出现问题时依然可以正确的执行剩余的程序 而 不会因为异常而终止程序执行 python 中 引进
  • 用举例来学习Python中的并行性、并发性和异步性

    Parallelism Concurrency and AsyncIO in Python by example 用举例来学习Python中的并行性 并发性和异步性 一篇中文译文 来自 Parallelism Concurrency and
  • 关于tortoiseGit找不到应用更改、解决冲突的办法

    其实是win11搞的鬼 win11系统默认的右键弹出选项太少了 用shift 右键或者右键后选择显示更多选项 然后再选择tortoiseGit就都出来了
  • 什么是Linux内核?

    Linux 内核 是一个免费 开源 整体 模块化 类 Unix 操作系统内核 它是Linux操作系统 OS 的主要组件 是计算机硬件与其进程之间的核心接口 内核是操作系统 OS 核心的计算机程序 它是操作系统中首先加载并保留在主内存中的部分
  • 案例分享|企业为什么要选择数字化转型?

    数字化在现代社会中扮演着重要的角色 成为企业转型的必由之路 随着科技的发展和信息化的进程 越来越多的企业开始拥抱数字化转型 以应对市场的变化和竞争的压力 数字化带来了诸多好处 不仅提高了企业的效率和生产力 还拓展了企业的经营领域和市场空间
  • kali更新命令!获取最新版本Kali Linux

    Kali Linux 是一个基于 Debian 的 Linux 发行版 包含各种独特且简化的实用程序 可提高渗透测试的准确性 速度和易用性 从表面上看 Kali 似乎与任何其他操作系统完全相同 它播放音频和文本文件 运行 Windows 和
  • 怎么用python画一个皮卡丘,用python画皮卡丘的代码

    大家好 小编来为大家解答以下问题 怎么用python画一个皮卡丘 用python画皮卡丘的代码 今天让我们一起来看看吧 给大家看看我的皮卡丘 电脑屏幕比较小 所以看不见假皮卡丘真实的身体 话不说上代码 import turtle as t
  • 课题立项查询怎么查 快码论文

    大家好 今天来聊聊课题立项查询怎么查 希望能给大家提供一点参考 以下是针对论文重复率高的情况 提供一些修改建议和技巧 可以借助此类工具 课题立项查询怎么查 在学术研究和项目申请中 了解课题立项信息对于研究者来说非常重要 快码写作 那么 课题
  • 持续集成交付CICD:K8S 自动化完成前端项目应用发布与回滚

    目录 一 实验 1 环境 2 GitLab新建项目存放K8S部署文件 3 Jenkins手动测试前端项目CD 流水线代码 下载部署文件 4 将K8S master节点配置为jenkins从节点 5 K8S 手动回滚前端项目版本 6 Jenk
  • 《LeetCode力扣练习》代码随想录——双指针法(替换数字---Java)

    LeetCode力扣练习 代码随想录 双指针法 替换数字 Java 刷题思路来源于 代码随想录 54 替换数字 受制于语言限制 普通解法 import java util Scanner class Main public static v
  • Set系列集合

    Set系列集系概述 Set系列集合特点 无序 存取顺序不一致 不重复 可以去除重复 无索引 没有带索引的方法 所以不能使用普通for循环遍历 也不能通过索引来获取元素 Set集合的功能上基本上与Collection的API一致 Set集合实
  • 想学习了解渗透测试?看完这一篇就够了

    一 什么是渗透测试 渗透测试 也称为笔测试 是针对计算机系统的模拟网络攻击 以检查可利用的漏洞 在这样的背景下Web 应用程序安全性方面 渗透测试通常用于增强 Web 应用程序防火墙 WAF 笔测试可能涉及尝试破坏任意数量的应用程序系统 例
  • 【功能更新】支持文档合并导出PDF/HTML格式;线上文章SEO设置能力优化

    HelpLook 功能更新速览 文档管理能力 1 导出支持多篇文档合在一个HTML文件 2 支持下载附件时保留原始文件名 3 主页 推荐文章 支持添加外链 4 文章URL根据标题自动生成 5 文章支持添加 作者 6 博客模版支持置顶文章 1
  • python打包exe failed to execute,python打包成exe 用不了

    本篇文章给大家谈谈python打包的exe有的电脑不能运行 以及python文件打包成exe文件运行报错 希望对各位有所帮助 不要忘了收藏本站喔 大家好 给大家分享一下一个有趣的事情 很多人还不知道这一点 下面详细解释一下 python t
  • Windows7系统ntoskrnl.exe文件丢失问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个ntoskrn
  • Python Plotly交互可视化详解

    今天给大家分享一篇可视化干货 介绍的是功能强大的开源 Python 绘图库 Plotly 教你如何用超简单的 甚至只要一行 代码 绘制出更棒的图表 沉没成本谬误 是人们常犯的几种认知偏差之一 由于在某件事上已经投入了 沉没 太多的成本 即使