原文链接:http://www.juzicode.com/python-module-matplotlib
Matplotlib是Python的2D绘图库,支持生成出版级图表,提供丰富的可视化类型和高度定制化接口,适用于数据分析、科研论文、商业报告等场景。
应用场景
- 数据趋势分析可视化
- 实验结果图表绘制
- 实时数据监控仪表盘
- 地理信息热力图生成
- 多维数据关系展示
- 学术论文插图制作
安装与导入
pip install matplotlib
import matplotlib.pyplot as plt
使用方法
1)折线图绘制
展示数据变化趋势的基础方法。
# juzicode.com/VX公众号:juzicode
x = [1,2,3,4,5]
y = [2,4,6,8,10]
plt.plot(x, y, 'r--')
plt.title('销售增长趋势')
plt.xlabel('季度')
plt.ylabel('销售额(百万)')
plt.savefig('line_chart.png')

2)柱状图比较
对比不同类别的数值差异。
# juzicode.com/VX公众号:juzicode
categories = ['A', 'B', 'C', 'D']
values = [23, 45, 56, 37]
plt.bar(categories, values, color=['#4CAF50','#2196F3','#FF9800','#E91E63'])
plt.grid(axis='y', alpha=0.5)
plt.savefig('bar_chart.png')

3)散点图分析
展示变量间相关性。
# juzicode.com/VX公众号:juzicode
import numpy as np
x = np.random.randn(100)
y = x * 2 + np.random.randn(100)*0.5
plt.scatter(x, y, alpha=0.6, c=np.arctan2(y, x))
plt.colorbar(label='角度值')
plt.savefig('scatter_plot.png')

4)多子图布局
创建复合图表进行对比分析。
# juzicode.com/VX公众号:juzicode
fig, axs = plt.subplots(2, 2, figsize=(10,8))
axs[0,0].plot(x, y, 'tab:blue')
axs[0,1].scatter(x, y, c='tab:orange')
axs[1,0].bar(categories, values, color='tab:green')
axs[1,1].pie(values, labels=categories, autopct='%1.1f%%')
plt.savefig('subplots.png')

5)3D曲面图
可视化三维数学函数。
# juzicode.com/VX公众号:juzicode
from mpl_toolkits.mplot3d import Axes3D
X = np.arange(-5,5,0.25)
Y = np.arange(-5,5,0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis')
plt.savefig('3d_surface.png')

6)动态实时绘图
实现数据实时可视化更新。
# juzicode.com/VX公众号:juzicode
plt.ion() # 开启交互模式
fig, ax = plt.subplots()
x = np.linspace(0, 4*np.pi, 200)
for phase in np.linspace(0, 10*np.pi, 100):
ax.clear()
y = np.sin(x + phase)
ax.plot(x, y, 'b-')
ax.set_ylim(-1.5,1.5)
plt.pause(0.1)
plt.ioff()

总结
Matplotlib核心优势:
- 支持30+种基础图表类型
- 高度可定制的绘图参数
- 完善的文档和社区支持
- 与NumPy/Pandas无缝集成
注意事项:
- 中文字体需额外配置
- 保存图像时注意dpi设置(推荐300+)
- 大数据集建议使用rasterized=True优化性能
- 交互式绘图后及时关闭交互模式