阅读量

原创教程,严禁转载。引用本文,请署名 Python中文网, http://www.zglg.work


十八、Matplotlib绘图(下)

我们拿到一堆数据,首先面临的问题是该选用哪类图,去可视化它们,然后才是如何绘制它们。今天这篇文章,解决该选用哪类图去可视化的问题。

根据使用场景不同,参考前人总结,一般划分为6类图。

1 关联关系

用于可视化两个或多个变量之间的相互关系,当一个变量发生变化时,另一个变量与之如何变化。

例如,边缘直方图:

2 排序

有序图有效地传达了条目的排名顺序。在图表上方添加度量标准的值,用户可以从图表本身获取精确信息。

例如,有序条形图:

3 分布

分布图反映数据分布情况,最常用的频率直方图,柱子高度表示出现的次数。

例如,下图是类型变量的直方图,每种类型可能有几类取值,通过不同颜色可以看出来:

4 组成

饼图是最常用的表达组成整体的每个部分占有率的图

如下所示,饼图表示整体是由4个国家组成,每个国家的COVID-19的死亡人数:

5 变化

变化类相关的图用于显示给定度量随时间变化的方式。

例如,如下带波峰波谷的时序图:

6 偏差

根据指标查看条目的变化情况,并可视化差异的顺序和数量等。

例如,发散型条形图:

7 小demo:带stacked的柱状图

matplotlib 具有很强的图形表达能力,呈现出stacked的特点,matplotlib中只需要设置一个bottom属性。如下例子,设置为men的数据,图表类型依然是bar图。

import matplotlib.pyplot as plt
labels = ['1', '2', '3', '4', '5']
men = [20, 35, 30, 35, 27]
women = [25, 32, 34, 20, 25]
width = 0.35
fig, ax = plt.subplots()
ax.bar(labels, men, width, label='Men')
# bottom
ax.bar(labels, women, width, bottom=men, label='Women')
ax.legend()

在后面专题绘制更多图形时,我们会更加深入到matplotlib绘图的重要细节中,到那时,我们会有更多的机会了解matplotlib的绘图API,各种属性。

8 seaborn

接下来,我们从以上6类图中,选取几种典型性的图,使用matplotlib绘制出来,基于前人已经绘制的图形基础上,我们再做润色,争取消化它们的同时做出更加美观的可视化图。

提到matplotlib,我们就不得不提seaborn,因为我们知道matplotlib本身已经足够强大,而seaborn又是基于它,开发了一些更加高层的API,让我们绘图更加如虎添翼,没有必要再去重复造轮子,所以能用seaborn的地方,尽量使用它,更少的代码,实现更加强大的可视化图。


Python 20个专题完整目录:

Python前言

Google Python代码风格指南

Python数字

Python正则之提取正整数和大于0浮点数

Python字符串

CSV读写乱码问题

Unicode标准化

Unicode, UTF-8, ASCII

Python动态生成变量

Python字符串对齐

Python小项目1:文本句子关键词的KWIC显示

Python列表

Python流程控制

Python编程习惯专题

Python函数专题

Python面向对象编程-上篇

Python面向对象编程-下篇

Python十大数据结构使用专题

Python包和模块使用注意事项专题

Python正则使用专题

Python时间专题

Python装饰器专题

Python迭代器使用专题

Python生成器使用专题

Python 绘图入门专题

Matplotlib绘图基础专题

Matplotlib绘图进阶专题

Matplotlib绘图案例

NumPy图解入门