以下是一个针对 Matplotlib 教学 的博客结构,按照分步骤教学方式撰写,以帮助读者从基础到高级逐步掌握 Matplotlib。
Matplotlib 教学:从基础到进阶绘图
Matplotlib 是 Python 中功能强大的数据可视化库,可以用来绘制多种类型的图表,如折线图、散点图、柱状图等。本博客将带你从基础设置到高级技巧,逐步掌握 Matplotlib 的使用。
目录
- Matplotlib 教学:从基础到进阶绘图
- 1. Matplotlib 简介与安装
- 什么是 Matplotlib?
- 安装 Matplotlib
 
- 2. Matplotlib 基础:画出你的第一个图
- 导入库并创建简单折线图
 
- 3. 调整图像样式:标题、坐标轴和标记
- 添加标题和坐标轴标签
- 设置刻度标记
- 调整线条样式
- 绘制网格图
 
- 4. 绘制多种图表类型
- 4.1 折线图
- 4.2 散点图
- 4.3 柱状图
- 4.4 饼图
 
- 5. 子图布局:subplots 的使用
- 使用 `subplot`
- 使用 `subplots`
 
- 6. 高级技巧:颜色映射与3D图
- 颜色映射
- 常用的颜色映射:
- 绘制 3D 图
 
- 7. 保存图表与输出优化
- 保存图表
- 优化输出
 
- 8. 总结与资源推荐
- 总结
- 推荐资源
 
 
1. Matplotlib 简介与安装
什么是 Matplotlib?
Matplotlib 是 Python 中最流行的数据可视化库之一,特别适合静态图表绘制。它有着灵活的 API,可以轻松实现定制化的图表。
安装 Matplotlib
你可以通过以下命令安装 Matplotlib:
pip install matplotlib
安装完成后,我们就可以开始绘图了。
2. Matplotlib 基础:画出你的第一个图
导入库并创建简单折线图
绘图的核心是 pyplot 模块,我们用它绘制图表:
import matplotlib.pyplot as plt
# 数据
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
# 绘图
plt.plot(x, y)
# 添加标题和标签
plt.title("Simple Line Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
# 显示图像
plt.show()
运行后会显示一张简单的折线图。
 
3. 调整图像样式:标题、坐标轴和标记
一个好的图表需要清晰的标题和标记,以下是如何调整样式的例子。
添加标题和坐标轴标签
plt.title("Square Numbers", fontsize=20)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
设置刻度标记
可以通过 tick_params() 自定义刻度标记的样式:
| 参数名称 | 功能描述 | 示例值 | 
|---|---|---|
| axis | 指定修改哪一个轴的刻度: 'x'、'y'或'both' | 'both' | 
| labelsize | 设置刻度标签字体的大小 | 12 | 
| direction | 设置刻度的方向: 'in'(向内)、'out'(向外)或'inout' | 'in' | 
| length | 设置刻度线的长度 | 6 | 
| width | 设置刻度线的宽度 | 2 | 
| colors | 设置刻度和刻度标签的颜色 | 'purple' | 
| grid_color | 设置网格线的颜色 | 'blue' | 
| grid_alpha | 设置网格线的透明度 | 0.5 | 
以下列为例:
plt.tick_params(axis='both', labelsize=12, direction='in', length=6, width=2, colors='purple')
运行效果
 代码运行后,你将看到一张带有以下刻度样式的折线图:
- 刻度线向内 (direction=‘in’)。
- 刻度线长度为 6,宽度为 2 (length=6, width=2)。
- 刻度线和刻度标签为紫色 (colors=‘purple’)。
- 刻度标签字体大小为 12 (labelsize=12)。

调整线条样式
可以通过参数自定义线条颜色、样式和宽度:
plt.plot(x, y, color='red', linewidth=2, linestyle='--')

绘制网格图
plt.tick_params(grid_color='blue', grid_alpha=0.5, axis='both', labelsize=12, direction='in', length=6, width=2, colors='purple')
参数介绍:
- grid_color 设置网格线的颜色 ‘blue’
- grid_alpha 设置网格线的透明度 0.5
启动网格图绘制:
plt.grid(True)

4. 绘制多种图表类型
4.1 折线图
折线图是最基本的图表,用于展示趋势:
plt.plot(x, y, label='Line')
plt.legend()
4.2 散点图
用于显示点与点之间的关系:
plt.scatter(x, y, s=100, c='blue', alpha=0.5)
其中s=100表示散点图中点的面积大小。
4.3 柱状图
展示分类数据的分布:
plt.bar(['A', 'B', 'C'], [5, 7, 9], color='purple')
4.4 饼图
适合展示比例关系:
plt.pie([20, 30, 50], labels=['A', 'B', 'C'], autopct='%1.1f%%')
5. 子图布局:subplots 的使用
在一个画布中绘制多张图表,可以使用 plt.subplot() 或 plt.subplots()。
使用 subplot
 
plt.subplot(121)  # 创建第1个子图(1行2列中的第1个图)
plt.plot(x, y)
plt.subplot(122)  # 创建第2个子图
plt.scatter(x, y)
plt.show()
使用 subplots
 
更灵活的子图方法:
fig, ax = plt.subplots(2, 2)  # 创建2行2列的子图
ax[0, 0].plot(x, y)
ax[1, 1].scatter(x, y)
plt.show()
6. 高级技巧:颜色映射与3D图
颜色映射
使用 cmap 创建渐变色散点图:
plt.scatter(x, y, c=y, cmap='viridis', s=50)
plt.colorbar()
常用的颜色映射:
Matplotlib 提供了多种内置的颜色映射,可以通过 cmap 参数设置。以下是几种常见的颜色映射:
- viridis:一种渐变色映射,从黄色到紫色,适用于展示数值范围。
- plasma:从黄色到紫红色的渐变色,比- viridis更加鲜艳。
- inferno:从黑色到亮黄色的颜色映射,非常适合暗背景的图表。
- coolwarm:从蓝色到红色的渐变,常用于展示具有正负值对比的场景。
- jet:经典的彩虹色映射,但在视觉上不如- viridis清晰。
- cividis:一种色盲友好的颜色映射。
你可以尝试不同的 cmap 参数来查看不同颜色映射的效果。例如:
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)  # x 是 0 到 10 之间 100 个等差数列
y = np.sin(x)  # y 是 x 的正弦函数
# 自定义函数用于创建散点图
def create_scatter_plot(ax, x, y, cmap, title):
    scatter = ax.scatter(x, y, c=y, cmap=cmap, s=20)
    ax.set_xlabel(title)
    plt.colorbar(scatter, ax=ax)
# 创建2行3列的子图
fig, axs = plt.subplots(2, 3, figsize=(15, 10))
# 色图列表
colormaps = ['viridis', 'plasma', 'cividis', 'coolwarm', 'jet', 'Greys']
# 遍历每个子图和色图
for ax, cmap in zip(axs.flatten(), colormaps):
    create_scatter_plot(ax, x, y, cmap, cmap)
'''
其中 axs.flatten() 
将二维的 axes 数组展平为一维数组,使得你可以像访问普通列表一样,访问每个子图。
'''
# 设置子图间距
plt.tight_layout()
# 显示图形
plt.show()

绘制 3D 图
通过 mpl_toolkits.mplot3d 模块:
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
# 生成数据
x = np.linspace(0, 30, 300)  # x 是 0 到 30 之间 300 个等差数列
y = np.sin(x)  # y 是 x 的正弦函数
z = np.cos(x)  # z 是 x 的余弦函数
# 创建图形对象
fig = plt.figure(figsize=(10, 8))  # 设置图形大小
ax = fig.add_subplot(111, projection='3d')
# 绘制散点图,设置点的颜色映射
sc = ax.scatter(x, y, z, c=z, cmap='coolwarm', s=50, alpha=0.7, edgecolors='w')
# 设置坐标轴标签
ax.set_xlabel('X', fontsize=14, color='darkblue')
ax.set_ylabel('Y', fontsize=14, color='darkblue')
ax.set_zlabel('Z', fontsize=14, color='darkblue')
# 设置标题
ax.set_title('3D Scatter Plot of sin(x) and cos(x)', fontsize=16, color='darkred')
# 添加颜色条
cbar = plt.colorbar(sc)
cbar.set_label('Cosine Values (Z)', fontsize=12)
# 调整视角
ax.view_init(elev=30, azim=60)  # 设置视角(高度、方位角)
# 增加网格
ax.grid(True, linestyle='--', color='gray', alpha=0.5)
# 显示图形
plt.show()

7. 保存图表与输出优化
保存图表
plt.savefig('output.png', dpi=300, bbox_inches='tight')
优化输出
- 设置更高的 DPI 提高分辨率。
- 使用 bbox_inches='tight'去除多余边框。
8. 总结与资源推荐
总结
Matplotlib 是一个功能强大的工具,本教程介绍了从基础到高级的用法。建议大家多动手练习,逐步掌握每个模块。
推荐资源
- Matplotlib 官方文档
- 《Python 数据可视化之美》
希望你喜欢本次的 Matplotlib 教学博客!


















