Matplotlib 快速入门

本章将带领你在10分钟内掌握 Matplotlib 的核心用法。我们从一个最简单的图表开始, 逐步了解如何绘制不同类型的图表、如何创建子图以及如何保存你的作品。

📥 1. 导入 Matplotlib

按照惯例,我们导入 pyplot 并简写为 plt。如果用到数值计算,也会导入 NumPy。

import matplotlib.pyplot as plt
import numpy as np

📈 2. 绘制第一个折线图

示例:简单折线图
# 数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y)          # 绘制折线
plt.title('简单折线图')  # 添加标题
plt.xlabel('X轴')       # X轴标签
plt.ylabel('Y轴')       # Y轴标签
plt.show()              # 显示图表
✔️ 最基本的绘图流程:准备数据 → 调用 plot → 添加修饰 → show()

🎯 3. Figure 和 Axes 对象

Matplotlib 的核心对象是 Figure (画布) 和 Axes (坐标系)。上面的 plt.plot() 实际上是隐式创建了 Figure 和 Axes。更灵活的方式是显式创建:

fig, ax = plt.subplots()   # 创建一个画布和一个坐标系
ax.plot(x, y)               # 在坐标系上绘图
ax.set_title('显式创建 Figure 和 Axes')
plt.show()

这种面向对象的方式在绘制复杂图表或子图时非常有用。

📊 4. 常用图表类型

散点图 (scatter)
# 生成随机数据
x = np.random.randn(50)
y = np.random.randn(50)
colors = np.random.rand(50)
sizes = 500 * np.random.rand(50)

plt.scatter(x, y, c=colors, s=sizes, alpha=0.5)
plt.colorbar()  # 显示颜色条
plt.title('散点图示例')
plt.show()
柱状图 (bar)
categories = ['A', 'B', 'C', 'D']
values = [15, 8, 12, 10]

plt.bar(categories, values, color='skyblue', edgecolor='navy')
plt.title('柱状图示例')
plt.ylabel('数量')
plt.show()
直方图 (hist)
data = np.random.randn(1000)  # 生成1000个正态分布随机数
plt.hist(data, bins=30, edgecolor='black', alpha=0.7)
plt.title('直方图示例')
plt.xlabel('数值')
plt.ylabel('频数')
plt.show()

🔲 5. 子图 (Subplots)

使用 plt.subplots() 可以创建多个子图:

fig, axes = plt.subplots(2, 2, figsize=(10, 8))  # 2行2列

# 左上
axes[0, 0].plot([1,2,3], [1,4,9])
axes[0, 0].set_title('折线图')

# 右上
axes[0, 1].scatter(np.random.randn(50), np.random.randn(50))
axes[0, 1].set_title('散点图')

# 左下
axes[1, 0].bar(['A','B','C'], [5,7,3])
axes[1, 0].set_title('柱状图')

# 右下
axes[1, 1].hist(np.random.randn(500), bins=20)
axes[1, 1].set_title('直方图')

plt.tight_layout()  # 自动调整间距
plt.show()

plt.tight_layout() 可以防止子图标签重叠。

💾 6. 保存图表

使用 savefig() 代替 show() 即可将图表保存为文件:

plt.plot(x, y)
plt.title('待保存的图表')
plt.savefig('my_plot.png', dpi=300, bbox_inches='tight')   # 保存为PNG,高分辨率,紧凑边框
# 也可以保存为 PDF / SVG:plt.savefig('my_plot.pdf')

📓 7. Jupyter Notebook 中的技巧

在 Notebook 中,通常使用魔法命令 %matplotlib inline 使图表直接显示在单元格下方。还可以使用 %matplotlib notebook 获得交互式图表。

%matplotlib inline
import matplotlib.pyplot as plt

plt.plot([1,2,3], [4,5,6])

✨ 8. 快速应用样式

Matplotlib 内置多种样式,一行代码即可改变整体外观:

print(plt.style.available)   # 查看所有可用样式
plt.style.use('seaborn-v0_8-darkgrid')   # 应用深色网格样式

# 之后的图表都会使用该样式
plt.plot([1,2,3], [1,2,3])
plt.title('应用样式后的图表')
plt.show()

至此,你已经掌握了 Matplotlib 最常用的功能。接下来可以深入学习如何定制图表的颜色、线型、标记等细节。