Python绘图库Plotly用超简单代码实现丰富的数据可视化图表

news2024/11/18 3:37:25

文章目录

    • 前言
    • Plotly 概述
    • 散点图
      • 时间序列分析
    • 高级绘图功能
      • 散点图矩阵
      • 关系热图
      • 自定义主题
    • 在 Plotly 图表工坊(Plotly Chart Studio)里编辑
    • 技术交流
      • 关于Python技术储备
        • 一、Python所有方向的学习路线
        • 二、Python基础学习视频
        • 三、精品Python学习书籍
        • 四、Python工具包+项目源码合集
        • ①Python工具包
        • ②Python实战案例
        • ③Python小游戏源码
        • 五、面试资料
        • 六、Python兼职渠道


前言

数据分析离不开数据可视化。Plotly 是一款用来做数据分析和可视化的在线平台,功能非常强大,可以在线绘制很多图形比如条形图、散点图、饼图、直方图等等

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


我之前一直使用 matplotlib ,由于它复杂的语法,我已经“沉没"在里面太多的时间成本。这也导致我花费了不知多少个深夜,在 StackOverflow 上搜索如何“格式化日期”或“增加第二个Y轴”。

但我们现在有一个更好的选择了 ,比如易于使用、文档健全、功能强大的开源 Python 绘图库 Plotly。今天就带你深入体验下,了解它如何用超简单的代码,绘制出更棒的图表。欢迎收藏学习,喜欢点赞支持。文末提供技术交流群,欢迎参与交流学习。

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

Github地址:https://github.com/WillKoehrsen/Data-Analysis/blob/master/plotly/Plotly%20Whirlwind%20Introduction.ipynb

图片

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 能让你更加愉悦地完成这些任务。

图片

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

技术交流

欢迎转载、收藏、有所收获点赞支持一下!

在这里插入图片描述


关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉CSDN大礼包:《Python入门资料&实战源码&安装工具】免费领取安全链接,放心点击

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

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

二、Python基础学习视频

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

三、精品Python学习书籍

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

四、Python工具包+项目源码合集
①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

六、Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1235080.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

有依次对应关系的数组X、Y、Z,如何排序其中一个X数组,使得另外的数组还与排序完成后的数组相对应(C语言实现)

1. 目的 有依次对应关系的数组X、Y、Z,排序其中一个X数组,使得另外的数组还与排序完成后的数组相对应,并打印出排序完成后的X、Y、Z数组。 2. 具体实现 以下面的这个对应关系为例,进行相应编程实现。 X [3.7,7.7,-6.6,1.5,-4.5…

时间序列中的6大类10种异常值处理方法(从根源上提高预测精度)

一、本文介绍 本文介绍的内容是在时间序列中异常值处理的方法,当我进行时间序列分析建模收集数据的过程中,往往都存在着一些特数据情况导致数据中存在着一些异常值,这些异常值往往会导致模型识别到不正常的模式从而无法准确的预测&#xff0…

【代码随想录】刷题笔记Day33

前言 Day33虽说是一个月,但是从第一篇开始实际上已经过了8个月了,得抓紧啊 46. 全排列 - 力扣(LeetCode) 前面组合就强调过差别了,这道题是排序,因此每次要从头到尾扫,结合used数组 class So…

NUCLEO-L552ZE SWD外部接口定义

如果使用ST-LINK调试器对外部MCU编程需要将CN4上的跳线拔下。

SQL DELETE 语句:删除表中记录的语法和示例,以及 SQL SELECT TOP、LIMIT、FETCH FIRST 或 ROWNUM 子句的使用

SQL DELETE 语句 SQL DELETE 语句用于删除表中的现有记录。 DELETE 语法 DELETE FROM 表名 WHERE 条件;注意:在删除表中的记录时要小心!请注意DELETE语句中的WHERE子句。WHERE子句指定应删除哪些记录。如果省略WHERE子句,将会删除表中的所…

为什么云游戏被认为是行业的未来趋势?

5G 时代的到来,游戏行业也正在经历着一场革命性的变革。云游戏,这个看似神秘的新兴领域,正在逐渐成为行业的未来趋势。 一、云游戏的优势 摆脱硬件束缚 在传统游戏中,玩家需要购买昂贵的游戏主机或电脑,才能享受高质…

SpringBoot——》配置logback日志文件

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

详解Python Tornado框架写一个Web应用全过程

Tornado是什么 之前在看Jupyter组件的源码的时候,发现了tornado这个web框架。 不仅仅做一个web框架, 通过使用非阻塞网络I/O,Tornado可以扩展到数万个开放连接。 这样非常适合 long polling , WebSockets 以及其他需要与每个用户…

【PTA题目】L1-4 稳赢 分数 15

L1-4 稳赢 分数 15 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但…

Spring Framework IoC依赖注入-按Bean类型注入

theme: smartblue Spring Framework 作为一个领先的企业级开发框架,以其强大的依赖注入(Dependency Injection,DI)机制而闻名。DI使得开发者可以更加灵活地管理对象之间的关系,而不必过多关注对象的创建和组装。在Spr…

⑩⑦【MySQL】锁:全局锁、表级锁、行级锁

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ MySQL锁 ⑩⑦【MySQL】锁:全局锁、…

Vue3 配置全局 scss 变量

variables.scss $color: #0c8ce9;vite.config.ts // 全局css变量css: {preprocessorOptions: {scss: {additionalData: import "/styles/variables.scss";,},},},.vue 文件使用

澳洲的猫罐头怎么样呢?几款我自己亲自喂养过的优质猫罐头推荐

一款优质的猫罐头,必须满足三个要点:完整又均衡的营养配方、新鲜又优质的原料、以及科学可靠的生产工艺。 猫罐头的三个要素,一个都不能少。配方不均衡,营养就不足;原料不新鲜,生产出来的猫罐头就不优质&a…

打码平台之图鉴的使用步骤

打码平台之图鉴 背景: ​ 今天给大家推荐一个我一直使用的验证码识别平台,图鉴,我没有收费,我只是觉得这个网站使用方便,支持验证码种类多,好了,话不多说,上教程! 注册…

Stock接口_节假日(1)

节假日 文章目录 节假日一. 查询最近十天的交易日日期列表二. 查询日期段内的交易日日期列表三. 查询假期信息 一. 查询最近十天的交易日日期列表 接口描述: 接口地址:/StockApi/holidayCalendar/getTenTradeDay 请求方式:GET consumes: produces:["*/*&q…

Ubuntu设设置默认外放和麦克风设备

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pulseaudio 是什么?二、配置外放1.查看所有的外放设备2.设定默认的外放设备3.设定外放设备的声音强度4.设定外放设备静音 三、配置麦克风1.查看…

计算机组成原理-主存储器与CPU的连接

文章目录 知识总览单块存储芯片与CPU的连接位扩展(存储字的位数)字扩展(存储字数)关于线选法和片选法字位同时扩展总结补充:译码器 知识总览 单块存储芯片与CPU的连接 数据总线,地址总线,片选线…

改进YOLOv8:结合Biformer——基于动态稀疏注意力构建高效金字塔网络架构

🗝️YOLOv8实战宝典--星级指南:从入门到精通,您不可错过的技巧   -- 聚焦于YOLO的 最新版本, 对颈部网络改进、添加局部注意力、增加检测头部,实测涨点 💡 深入浅出YOLOv8:我的专业笔记与技术总结   -- YOLOv8轻松上手, 适用技术小白,文章代码齐全,仅需 …

2023年【上海市安全员C3证】考试内容及上海市安全员C3证复审考试

题库来源:安全生产模拟考试一点通公众号小程序 上海市安全员C3证考试内容是安全生产模拟考试一点通总题库中生成的一套上海市安全员C3证复审考试,安全生产模拟考试一点通上上海市安全员C3证作业手机同步练习。2023年【上海市安全员C3证】考试内容及上海…

【paddlepaddle】

安装paddlepaddle 报错 ImportError: /home/ubuntu/miniconda3/envs/paddle_gan/bin/../lib/libstdc.so.6: version GLIBCXX_3.4.30 not found (required by /home/ubuntu/miniconda3/envs/paddle_gan/lib/python3.8/site-packages/paddle/fluid/libpaddle.so) 替换 /home/ubu…