[ PROMPT_NODE_26796 ]
matplotlib
[ SKILL_DOCUMENTATION ]
# Matplotlib
## 概述
Matplotlib 是 Python 的基础可视化库,用于创建静态、动画和交互式图表。本技能提供关于有效使用 matplotlib 的指导,涵盖 pyplot 接口(MATLAB 风格)和面向对象 API(Figure/Axes),以及创建出版级可视化效果的最佳实践。
## 何时使用此技能
当需要执行以下操作时使用此技能:
- 创建任何类型的图表(折线图、散点图、柱状图、直方图、热力图、等高线图等)
- 生成科学或统计可视化图表
- 自定义图表外观(颜色、样式、标签、图例)
- 创建包含子图的多面板图表
- 将可视化结果导出为各种格式(PNG、PDF、SVG 等)
- 构建交互式图表或动画
- 进行 3D 可视化
- 将图表集成到 Jupyter Notebook 或 GUI 应用程序中
## 核心概念
### Matplotlib 层级结构
Matplotlib 使用对象的层级结构:
1. **Figure (画布)** - 所有图表元素的顶级容器
2. **Axes (坐标轴)** - 显示数据的实际绘图区域(一个 Figure 可以包含多个 Axes)
3. **Artist (绘图对象)** - 图表上可见的所有内容(线条、文本、刻度等)
4. **Axis (轴)** - 处理刻度和标签的数轴对象(x 轴、y 轴)
### 两种接口
**1. pyplot 接口(隐式,MATLAB 风格)**
python
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
plt.show()
- 方便快捷,适合简单绘图
- 自动维护状态
- 适合交互式工作和简单脚本
**2. 面向对象接口(显式)**
python
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4])
ax.set_ylabel('some numbers')
plt.show()
- **推荐用于大多数使用场景**
- 对 Figure 和 Axes 有更明确的控制
- 更适合包含多个子图的复杂图表
- 更易于维护和调试
## 常用工作流
### 1. 基础绘图创建
**单图工作流:**
python
import matplotlib.pyplot as plt
import numpy as np
# 创建画布和坐标轴(面向对象接口 - 推荐)
fig, ax = plt.subplots(figsize=(10, 6))
# 生成并绘制数据
x = np.linspace(0, 2*np.pi, 100)
ax.plot(x, np.sin(x), label='sin(x)')
ax.plot(x, np.cos(x), label='cos(x)')
# 自定义
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Trigonometric Functions')
ax.legend()
ax.grid(True, alpha=0.3)
# 保存和/或显示
plt.savefig('plot.png',