Python数据可视化实现泡泡堆积关联图

发布时间:2021-07-23 09:46:19 作者:chen
来源:亿速云 阅读:349

这篇文章主要介绍“Python数据可视化实现泡泡堆积关联图”,在日常操作中,相信很多人在Python数据可视化实现泡泡堆积关联图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python数据可视化实现泡泡堆积关联图”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

   

前言

有小伙伴说,使用 matplotlib 做出来的图表比不上其他的基于 js 包装的库(pyechart、bokeh、plotly等)漂亮,他们可以还可以交互。同时,基于 matplotlib  包装的 seaborn 似乎也比较省代码。

本想写一篇文章整体说一下这些库的对比,但是如果没有实际例子不太符合我的风格。

因此,今天的目标图表是其他上层可视化库难以做到(或者根本无法完成):

Python数据可视化实现泡泡堆积关联图  

那些基于 js 包装的可视化库,在js环境下,按理应该是可以做到。但在 Python 中就不会这么乐观

有机会我会分享 d3.js 的做法,你会发现他与 matplotlib  的思路很相似

本文所需要的库如下:

Python数据可视化实现泡泡堆积关联图  

数据是这样子:

Python数据可视化实现泡泡堆积关联图  

本文所有的通用函数以宽表作为依据,行索引放 X 轴,每一列作为不同的图表系列

这是颜色的定义:

Python数据可视化实现泡泡堆积关联图  

篇幅有限,我不会对所有的知识点都作详细讲解


 

逐一击破

通常复杂的可视化是通过多种类型的图形组合而成,显然这次的目标图表是由3个部分组成:

  1. 堆积图,实际就是四边形图形而已

  2. 泡泡图,实际就是圆圈图形

  3. 中间作为连接修饰的长方形

为什么我用"图形"去描述他们?

如果你使用一些上层的可视化库,你会发现他们会在图表类型层面归类,这无疑让你能快速作图。但缺点就是无法随心所欲定制化图表。

而 matplotlib  提供了底层"图形"的控制,同时也提供了基本图表操作。

首先看看如何做出堆积图,下面以2个系列作为示例:

Python数据可视化实现泡泡堆积关联图  

图表如下:

Python数据可视化实现泡泡堆积关联图  

知道这个原理,那么就可以定义通用的函数:

Python数据可视化实现泡泡堆积关联图  

行3是基本的 pandas 操作,有兴趣可以参考我的 pandas 专栏

调用如下:

Python数据可视化实现泡泡堆积关联图  

图表如下:

Python数据可视化实现泡泡堆积关联图  

基本的图表做出来,最后再调整一些细节(比如y轴的位置,刻度线等等),因为这些只是一些操作,非常简单。

接下来做泡泡图


 

图形属性映射

数据可视化的本质,实际是数据到图形元素的映射。

看看之前的堆积图,我们成功把数据中的3种维度数据映射上去:

  1. 年份,映射到柱子的水平位置(x轴位置)

  2. 数值,映射到柱子的高度(调用 bar 方法时的参数 height)

  3. 地区,映射到柱子的颜色

看一个极端的例子。数据中还有一列移民人数(migrant),我们仍然可以往堆积图上映射:

Python数据可视化实现泡泡堆积关联图  

虽然现在图表看起来非常奇怪,但的确是可行:

Python数据可视化实现泡泡堆积关联图  

现在,你应该感受到数据可视化的本质,同时也看到,每一种的图表可以合理映射的维度是有限的。

比如上面的堆积图的柱子宽度显然不是一个合理映射属性。

解决方法就是用其他的"图形"继续做映射。

我们在同一个坐标系上画散点图,映射关系如下:

代码如下:

Python数据可视化实现泡泡堆积关联图  

调用如下:

Python数据可视化实现泡泡堆积关联图  

看看图表:

Python数据可视化实现泡泡堆积关联图  

下一步,加上中间连接修饰的矩形框


 

画图形

matplotlib 内置了许多基本图形,因此创建图形不是什么难事:

Python数据可视化实现泡泡堆积关联图  

注意,上面行9中设置的参数的数值,默认是按数据表示。

比如,[0,40] 的40,相当于指定矩形的左下角点位于 y 轴值为 40 的位置

但是,[0,40] 的 0 应该表示的是 x 轴,为什么是0?

这是因为我们作图时,传给 x 轴的是字符串:

Python数据可视化实现泡泡堆积关联图  

此时坐标系 x 轴被 matplotlib 转成 0 开始的升序编码

matplotlib 有6种坐标系转换,这是最重要的核心机制,这里不深入讲解

看看效果:

Python数据可视化实现泡泡堆积关联图  

知道了原理,那么需求就非常容易了:

Python数据可视化实现泡泡堆积关联图  

看看效果:

Python数据可视化实现泡泡堆积关联图  

非常好,为泡泡图加上数据标签,原理与之前一样:

Python数据可视化实现泡泡堆积关联图  
Python数据可视化实现泡泡堆积关联图  

最后,按要求调整轴的细节即可:

Python数据可视化实现泡泡堆积关联图  

完整调用如下:

Python数据可视化实现泡泡堆积关联图  

效果如下:

Python数据可视化实现泡泡堆积关联图  

你会发现,整个过程我们一直在设置数据与图形的关联,这就是 matplotlib 的核心思路!

看似需要很多代码,但是我们非常容易就可以使他们在不同的数据之间重复使用。

接下来我会继续编写更多非常规要求的图表,敬请关注!

到此,关于“Python数据可视化实现泡泡堆积关联图”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. jQuery 实现广告图fixed与scroll关联
  2. Python数据可视化图实现过程分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:python中暂停代码的方法是什么

下一篇:PHP有哪些遍历数组的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》