本书为《Python数据可视化》一书的配套内容,本章为第1章 数据可视化与matplotlib 本文主要介绍了什么是数据集可视化,数据可视化的目的,常见的数据可视化方式,如何选择正确的可视化图表,matplotlib的多种API使用以及matplotlib的层次结构等。
数据可视化旨在借助图形化的手段,将一组
数据以图形的形式表示
,并利用数据分析和开发工具发现其中未知信息的处理过程。可视化其实是一个
抽象
的过程,它可以简单地理解为将一个不易描述的事物形成一个可感知画面的过程,也就是从数据空间到图形空间的映射
。
数据可视化的过程
无论原始数据被映射为哪种图形数据,最终要达到的目的只有一个,便是准确地、高效地、全面地传递信息,进而建立起数据间的关系,使人们发现数据间的
规律
和特征
,并挖掘出有价值的信息
,提高数据沟通的效率
。
数据通常包含4种关系:比较、分布、构成和联系。
比较:比较关系主要关注数据中各类别或时间变化的情况。 分布:分布关系主要关注不同数值范围内包含多少数据的情况。 构成:构成关系主要关注各部分与整体占比的情况。 联系:联系关系主要关注两个及两个以上的变量之间关系的情况。
matplotlib
、seaborn
、ggplot、bokeh、pygal、pyecharts
。
matplotlib是一个由
John D.Hunter
等人员开发的、主要用于绘制2D图表的Python库
。 matplotlib支持numpy、pandas的数据结构
,具有绘制丰富的图表、定制图表元素或样式的功能。 matplotlib 还可用于绘制一些3D图表
。 matplotlib官网提供了三种API:pyplot API
、object-oriented API
、pylab API
。
pyplot API
是使用pyplot模块开发的接口,该接口封装了一系列与MATLAB命令同名的函数
,使用这些函数可以像使用MATLAB命令一样快速地绘制图表。
通过pyplot API
绘制图表的基本思路:
(1)导入pyplot模块。 (2)调用该模块的绘图函数来绘制图表。 (3)展示图表。 pyplot API屏蔽了底层中画布、绘图区域的创建细节,它会持续跟踪
当前的画布和绘图区域
。
import numpy as np
import matplotlib.pyplot as plt # 导入 pyplot 模块
data = np.array([1, 2, 3, 4, 5]) # 准备数据
plt.plot(data) # 在当前画布的绘图区域中绘制图表
plt.show() # 展示图表
object-oriented API是面向对象的接口,该接口封装了一系列对应图表元素的类,只有创建这些类的对象并按照隶属关系组合到一起才能完成一次完整的绘图。
通过object-oriented API
绘制图表的基本思路:
(1)导入pyplot模块。 (2)创建画布(Figure类的对象)。 (3)在画布上添加绘图区域(Axes类的对象)。 (4)调用绘图方法绘制图表。 (5)展示图表。
import numpy as np
import matplotlib.pyplot as plt
data = np.array([1, 2, 3, 4, 5]) # 准备数据
fig = plt.figure() # 创建代表画布的Figure 类的对象fig
ax = fig.add_subplot(111) # 在画布fig上添加坐标系风格的绘图区域ax
ax.plot(data) # 绘制图表
plt.show() # 展示图表
用户在使用时可以根据自身的实际情况进行选择 ,若只是需要
快速地绘制图表
,可以选择pyplot API
进行开发;若需要自定义图表
,可以选择object-oriented API
进行开发。
使用matplotlib绘制的图形主要由三层组成:容器层
、图像层
和辅助显示层
。
关于
Canvas对象
、Figure对象
、Axes对象
的结构如下图所示。
Axes对象拥有属于自己的坐标系,它可以是直角坐标系
,即包含x轴和y轴的坐标系,也可以是三维坐标系
(Axes的子类Axes3D对象),即包含x轴、y轴、z轴的坐标系。