【数据操作与可视化】Matplotlib绘图-基础功能
1、Matplotlib简介
Matplotlib是一个Python的绘图库,它提供了一个类似于MATLAB的绘图框架,并且支持多种输出格式,包括SVG、PDF、PS、EPS等。Matplotlib使得用户可以轻松地创建各种静态、动态和交互式的图表。Matplotlib是数据科学、工程和科学计算领域中常用的库之一,它帮助用户以可视化的方式探索和展示数据。

可视化是在整个机器学习和AI训练的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。如查看变化趋势,梯度下降效果,可视化理解数据集特征等。
2、matplotlib的绘图流程
在使用matplotlib进行图形绘制时,有两种绘图模式。
一种是简易快速绘图,也就是说只要给出需要绘图用的数据,即可使用少量代码快速绘制图形。这种情况下,图形全部使用默认的绘图参数进行创建,适合想快速通过图形了解数据特征的情况。
另一种是标准绘图。在标准绘图模式下,我们可以自由创建画布以及子图,添加更加丰富的绘图元素,适合大部分数据分析绘图的情况。
matplotlib的绘图流程如下:

3、matplotlib的初始化设置
通常,我们在使用matplotlib时,需要在代码中先导入如下的初始化代码:
python
# 导入绘图相关的库(见开头)
import matplotlib.pyplot as plt
# 让matplotlib的图表在jupyternotebook中直接显示
%matplotlib inline
# 解决中文乱码问题(仅针对windows电脑)
plt.rcParams['font.sans-serif']='SimHei'
# 解决负号无法显示问题
plt.rcParams['axes.unicode_minus']=False
# 让图表变成矢量形式,显示更清晰
%config InlineBackend.figure_format = 'svg'
4、可视化图表的组成元素介绍
一个正规的可视化图表如下图所示,该表包含了一个图表中的基本组成元素。

画布
画布就是字面意思,你首先需要找到一块"布",即绘图界面,然后在这块"布"上绘制图表。
坐标系
画布是图表的最大概念,在一块画布上可以建立多个坐标系,坐标系又可以分为直角坐标系、球坐标系和极坐标系三种,其中直角坐标系最常用。
坐标轴 坐标轴是在坐标系中的概念,主要有x轴和y轴(一般简单的可视化均为二维),一组x/y值用来唯一确定坐标系上的一个点。x轴也称横轴,就是上图中的月份;y轴也称纵轴,就是上图中的注册人数。在上图的坐标系中,通过月份和注册人数可以唯一确定一个点。
坐标轴标题 坐标轴标题就是x轴和y轴的名称,在上图中我们把x轴称为月份,把y轴称为注册人数。
图表标题 图表标题是用来说明整个图表核心主题的,上图中的核心主题就是在1---9月中每月的注册人数。
数据标签 数据标签用于展示图表中的数值。上图为折线图,是由不同月份和注册人数确定不同的唯一点,然后将这些点连接起来就是一个折线图,折线图是一条线,如果将每个点对应的数值显示出来,这些数值就是数据标签。
数据表 数据表在图表下方,它以表格的形式将图表中坐标轴的值展示出来。
网格线 网格线是坐标轴的延伸,通过网格线可以更加清晰地看到每一点大概在什么位置,值大概是多少。 图例图例一般位于图表的下方或右方,用来说明不同的符号或颜色所代表的不同内容与指标,有助于认清图。上图中只有一条折线,所以图例的作用不是很大,但是当一个图表中有多条折线图,或者包含不同形状的混合时,图例的作用就显而易见了。你可以很快辨别出哪个颜色的折线代表哪个指标。
5、快速绘图
利用matplotlib快速绘图的步骤如下:
yaml
# 给定一组x和y的值快速绘图
x = [1,2,3,4,5,6]
y = [1123, 3423, 3544, 1348, 2897, 3021]
plt.plot(x, y) # 默认是画折线图
plt.show()

当然,也可以利用Numpy来生成连续的X,给Y一个函数方程,来实现绘图:
python
from matplotlib import pyplot as plt
import numpy as np
# 指定中文使用的字体和正常符号显示
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
x = np.arange(1, 100, 0.5) # 为 X 赋值
# Y与X设置各类函数关系
# y = 3*x*x + 5*x + 6
# y = [5**i for i in x]
# y = [math.log(i, 5) for i in x]
# y = -2*x + 5
# y = x*x
y = np.sin(x)
# 传递图表参数并生成图表
plt.plot(x, y, color='blue', linewidth=2, label='图例')
plt.xlabel('x轴名称')
plt.ylabel('y轴名称')
plt.title('Y与X的函数关系图')
# plt.legend() # 显示图例
plt.savefig("test.png") # 保存图表,只能在show之前
plt.show()
