1 Matplotlib 基础使用
在数据科学和机器学习的工作流程中,数据可视化是不可或缺的一环。无论是探索数据模式,还是展示分析结果,一个好的可视化工具都可以极大地提升我们对数据的理解和决策能力。Matplotlib 是Python中最流行、功能最强大的可视化库之一。它不仅能帮助我们轻松创建各种类型的静态图表,还支持生成交互式和动画效果的可视化,从而满足不同场景下的需求。
1.1 下载Matplotlib
使用pip安装Matplotlib,命令如下:
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple/
1.2 Matplotlib的基本概念
Matplotlib的基本概念主要包括以下几个方面:
- Figure:整个图像窗口,所有的绘图区域都在其中
- Axes:实际绘图的子区域(可以划分为多个子区域),包括坐标轴、图例、标题等。
- Axis:坐标轴,包括x轴、y轴,用于显示数据范围。
- Artist:所有在图中绘制的图形对象,包括简单的点、线条、文本、图像等。
如下图所示:
1.3 Matplotlib的绘图流程
Matplotlib的绘图流程主要包括以下几个步骤:
- 创建Figure对象
- 绘制图形
- 设置坐标轴
- 添加图例、标题等
- 显示图形或保存图形
一个简单的Matplotlib绘图示例代码如下:
import matplotlib.pyplot as plt # 导入Matplotlib库
import numpy as np # 导入NumPy库,用于生成和处理数据
# 画一个正弦曲线和余弦曲线
x = np.linspace(-np.pi, np.pi, 100) # 生成-π到π之间的100个等间距的数据
y1 = np.sin(x) # 计算正弦值
y2 = np.cos(x) # 计算余弦值
# 创建Figure对象
plt.figure(figsize=(8, 6))
# 绘制图形
# plot()函数用于绘制曲线,参数分别为x轴数据、y轴数据、标签、颜色、线型、线宽
plt.plot(x, y1, label='sin(x)', color='r', linestyle='-', linewidth=2) # 绘制正弦曲线
plt.plot(x, y2, label='cos(x)', color='b', linestyle='--', linewidth=2) # 绘制余弦曲线
# 设置坐标轴
plt.xlabel('x') # 设置x轴标签
plt.ylabel('y') # 设置y轴标签
plt.xlim(-np.pi, np.pi) # 设置x轴范围
plt.ylim(-1, 1) # 设置y轴范围
# 添加图例、标题
plt.legend() # 显示图例
plt.title('Sin and Cos Curve') # 设置标题
plt.show() # 显示图形

1.4 Matplotlib的绘图样式简介
1.4.1 颜色

Matplotlib中通过函数的 color
参数控制,并且提供了多种颜色设置方式如下:
- 'Cn’默认颜色循环:C0、C1、C2、C3、C4、C5、C6、C7、C8、C9
- 'x’单字母表示:b(蓝色)、g(绿色)、r(红色)、c(青色)、m(洋红)、y(黄色)、k(黑色)、w(白色)
- ‘name’ 颜色名称:‘blue’、‘green’、‘red’、‘cyan’、‘magenta’、‘yellow’、‘black’、‘white’…
- ‘#rrggbb’ 十六进制RGB:‘#000000’(黑色)、‘#FF0000’(红色)、‘#00FF00’(绿色)、‘#0000FF’(蓝色)…
- (R, G, B[ ,A]) 0.0 到 1.0 之间的RGBA元组:(0,0,0)(黑色)、(1,0,0)(红色)、(0,1,0)(绿色)、(0,0,1)(蓝色)…
- ‘x.y’ 0.0 到 1.0 之间的灰度值:‘0’(黑色)、‘0.5’(灰色)、‘1’(白色)
所有的的颜色名称如下图所示:

'name'
提供的颜色不满足你的需求时,可以使用 (R, G, B[ ,A])
或 #rrggbb
来自定义颜色。下面的程序演示了如何使用各种颜色设置方式进行绘图:
import matplotlib.pyplot as plt
import numpy as np
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimSun']
plt.rcParams['axes.unicode_minus'] = False
# 生成 x 轴数据
x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
# 创建一个大小为 12x10 的图形
plt.figure(figsize=(12, 10))
# 子图1:使用默认颜色循环
plt.subplot(3, 2, 1)
plt.plot(x, y, label='C0', color='C0')
plt.plot(x, y - 0.1, label='C1', color='C1')
plt.plot(x, y - 0.2, label='C2', color='C2')
plt.title('默认颜色循环')
plt.legend(