Matplotlib是Python最成熟稳定的二维绘图库,三步即可完成基础绘图:准备数据→创建画布→绘制显示;需配置中文字体和负号显示;复杂图表推荐面向对象方式;保存时按需选择矢量图或高清PNG。

Matplotlib 是 Python 最成熟、最常用的二维绘图库,它不追求炫酷动效,但胜在稳定、灵活、可定制性强——一张科研论文级的折线图、热力图或子图组合,几行代码就能生成。
基础绘图:三步就能出图
绝大多数图表都遵循统一流程:准备数据 → 创建画布与坐标系 → 绘制并显示。
- 用 plt.figure() 或 plt.subplot() 控制画布大小和布局
- 用 plt.plot()、plt.scatter()、plt.bar() 等函数画图,参数如 label、color、linewidth 可直接调整样式
- 别忘了 plt.xlabel()、plt.title()、plt.legend() 和 plt.show(),否则图可能没标签,甚至不显示
中文与负号显示:两个经典坑
直接画图常遇到中文乱码、负号显示为方块的问题,本质是字体和符号设置未覆盖。
- 在绘图前加两行配置:
plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False - Mac 用户可改用 'Helvetica Neue',Linux 用户建议安装 wqy-zenhei 字体并指定路径
面向对象(OO)方式:复杂图表的必经之路
当需要多个子图、共享坐标轴、精细控制刻度或嵌入 GUI 时,推荐用面向对象接口,更清晰也更可控。
立即学习“Python免费学习笔记(深入)”;
- 用 fig, ax = plt.subplots(2, 3) 一次性创建带网格的画布与坐标轴数组
- 每个 ax 是独立对象,调用 ax.plot()、ax.set_xlim() 等方法,避免全局状态干扰
- 适合循环绘图:比如对 5 组数据分别用 for i, data in enumerate(datas): ax[i].plot(data)
保存高清图:DPI 与格式要匹配
论文投稿常要求 EPS 或 PDF 矢量图,而展示常用 PNG。保存质量不仅看分辨率,更要看后端和参数。
- 矢量图优先选 plt.savefig('fig.pdf') 或 plt.savefig('fig.eps'),缩放不失真
- 导出高清 PNG:加参数 dpi=300,例如 plt.savefig('fig.png', dpi=300, bbox_inches='tight')
- 若图中含 LaTeX 公式(如 r'$\alpha^2 + \beta$'),确保系统已安装 LaTeX,并开启 usetex=True










