Python之神奇的绘图库matplotlib

9次阅读

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

Python之神奇的绘图库matplotlib

Matplotlib 是 Python 最成熟、最常用的二维绘图库,它不追求炫酷动效,但胜在稳定、灵活、可定制性强——一张科研论文级的折线图、热力图或子图组合,几行代码就能生成。

基础绘图:三步就能出图

绝大多数图表都遵循统一流程:准备数据 → 创建画布与坐标系 → 绘制并显示。

  • plt.figure()plt.subplot() 控制画布大小和布局
  • plt.plot()plt.scatter()plt.bar() 等函数画图,参数如 labelcolorlinewidth 可直接调整样式
  • 别忘了 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
text=ZqhQzanResources