编程

python可视化——气泡图的绘制

chenmo · 2月15日 · 2021年 · 249次已读
python可视化——气泡图的绘制

python可视化——图的绘制(气泡图)

00 前言

大学期间毕业论文以及大创项目都使用到了python进行机器学习,虽然机器学习部分并不是很深入,但是涉及的面对于目前的我来说仍然有些广泛。除了对数据的处理让我有些吃力,绘图更是让零基础的我摸不着头脑。之前都是直接从网上搜集到的代码,也没有去深入解读每一行的意思,思来想去,这样始终不是解决问题的办法,因此,打算从目前开始好好地把绘图部分整理一下。

 

01 概述

气泡图(Bubble)是一种多变量图表,是散点图 的变体,也可以认为是散点图和百分比区域图的组合。 其可用于展示三个变量之间的关系,和散点图一样,绘制时将一个变量放在横轴,另一个变量放在纵轴,而第三个变量则用气泡的大小来表示。

排列在工作表的列中的数据(第一列中列出x值,在相邻列中列出相应的y值和气泡大小的值)可以绘制在气泡图中。

气泡图与散点图相似,不同之处在于:气泡图允许在图表中额外加入一个表示大小的变量进行对比,而第四维度的数据则可以通过不同的颜色来表示(甚至在渐变中使用阴影来表示)。

另一种使用气泡元素的流行方法是使用气泡地图。在气泡地图中,x和y分别代表一个地理位置的经纬坐标。在不要求定位非常精确的情况下,气泡地图可以将数据的相对集中度完美地体现在地理背景中。

此外,表示时间维度的数据时,可以将时间维度作为直角坐标系中的一个维度,或者结合动画来表现数据随着时间的变化情况。

气泡图通常用于比较和展示不同类别圆点(这里我们称为气泡)之间的关系,通过气泡的位置以及面积大小。从整体上看,气泡图可用于分析数据之间的相关性。

但需要注意的是,气泡图的数据大小容量有限,气泡太多会使图表难以阅读。但是可以通过增加一些交互行为弥补:隐藏一些信息,当鼠标点击或者悬浮时显示,或者添加一个选项用于重组或者过滤分组类别。

最后,气泡的大小是映射面积而非半径或直径,如果是基于半径或者直径,圆的大小不仅会呈现指数级的变化,而且还会导致视觉上的误差。如图1所示。

图1 气泡图

▲图1 气泡图

 

02 Matplotlib

由于是零基础,所以直接使用现成的库会轻松很多,先从Matplotlib库开始介绍一些必要的参数吧。

贴上详细的介绍:Matplotlib 教程

介绍

Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。这里将会探索 matplotlib 的常见用法。

pylab

pylab 是 matplotlib 面向对象绘图库的一个接口。它的语法和 Matlab 十分相近。也就是说,它主要的绘图命令和 Matlab 对应的命令有相似的参数。

初始实例

先从正弦余弦函数图像开始吧。

图3 正弦余弦图像

  • X 是一个 numpy 数组,包含了从 −π 到 +π 等间隔的 256 个值。
  • C 和 S 则分别是这 256 个值对应的余弦和正弦函数值组成的 numpy 数组。
  • plot函数
  • xlim / ylim函数
  • legend函数

plot函数

函数功能:

展现变量的趋势变化。

函数语法:

参数说明:

y: y轴上的数值

ls:折线图的线条风格('-', '–', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted')

lw:折线图的线条宽度

label:标记图内容的标签文本(需要结合legend使用)

注意:上面格式中单引号和双引号可以相互替换

legend函数

函数功能:

设置图例的字体、大小、颜色等属性,制定个性化。

函数语法:

参数说明:

loc:指代地理位置(upper lower / right left)

其余参数见:legend参数详解

注意:如果在plot设置了label参数,需要加上legend函数,才可以显示label。

 

03 散点图

1 plot绘制

散点图

2 scatter绘制

scatter散点图

scatter函数

函数功能:

根据x, y坐标,绘制散点;可更改点的颜色(c)、大小(s)、形状(marker)等

函数语法:

参数说明:

x:指定 X 轴数据。

y:指定 Y 轴数据。

s:指定散点的大小。

c:指定散点的颜色。

alpha:指定散点的透明度。

linewidths:指定散点边框线的宽度。

edgecolors:指定散点边框的颜色。

marker:指定散点的图形样式。

cmap:指定散点的颜色映射,会使用不同的颜色来区分散点的值。

其余参数见:scatter参数详解

与plot区别:scatter绘制散点,plot绘制经过点的曲线。

简单的散点图,用plot方法绘制速度会更快,scatter方法则慢一点,所以只有当颜色和大小超过了一定数量时,才推荐使用scatter方法。

04 气泡图

易知,scatter更适合绘制复杂的气泡图。

scatter 气泡图

scatter.legend_elements函数

scatter函数的返回值为一个PathCollections对象,通过其legend_elements方法,可以获得绘制图例所需的信息.

1. 颜色图例

legend_elements方法默认返回的就是colors的信息,可以直接用于绘制图例,代码如下

注意,其中*号是必须的,上述代码会将所有颜色都显示在图例上,输出结果如下

img

当颜色的值为连续型变量时,采用colorbar的图例更加直观,代码如下

输出结果如下

img

2. 点的大小图例

legend_elements方法是有很多参数可以调整的,其中prop参数指定返回的信息,有两种取值,默认是colors, 表示返回的是点的颜色信息,取值为sizes时,返回的是点的大小信息。另外还有一个参数是num, 当图例的取值为连续型时,num指定了图例上展示的点的个数,用法如下

输出结果如下

img

3. 组合图例

上述的可视化效果都比较简单,通过matplotlib.pyplot就可以搞定了,对于图例的组合,需要借助axes来实现,代码如下

输出结果如下

img

从这里也可以看出,对于简单的图片展示,pyplot模块为我们提供了便利,但是复杂的图形组合,还是需要用axes来实现。

 

05 参考文献

  1. matplotlib基础绘图命令之scatter
  2. 什么是气泡图?怎样用Python绘制?怎么用?终于有人讲明白了
  3. 用python的Matplotlib库画散点图、气泡图和箱线图
  4. Python Matplotlib.axes.Axes.add_artist()用法及代码示例
  5. 在Python中用matplotlib作图时,若多个子图的图例相同,那怎样将该图例在总图上显示出来?
  6. Matplotlib 教程

 

0 条回应

🎉 总访问量:45795 今日访问量:135 您是今天第:135 个访问者🎉