Skip to content

Matplotlib - 简介

Matplotlib 是一个全面的库,用于在 Python 中创建静态、动态和交互式的可视化图表。它可以说是使用最广泛的 Python 绘图库,并且是科学 Python 生态系统的基础。

主要特性:

  • 多功能绘图: 可以创建各种各样的图表,包括折线图、散点图、条形图、直方图、等高线图、3D 图等等。
  • 出版质量: 生成高质量的图形,适用于以各种格式(PNG、JPG、PDF、SVG 等)出版。
  • 高度定制: 对图表的每个方面提供广泛的控制,包括颜色、线条样式、标记、字体、标签和布局。
  • 良好集成: 可以与 NumPy 和 Pandas 等核心数据科学库无缝协作。
  • 可扩展性: 为不同的使用场景提供多种 API(应用程序接口):
    • pyplot 接口: 一个基于状态的接口,方便进行交互式绘图(类似于 MATLAB)。
    • 面向对象 (OO) 接口: 一个更强大和灵活的接口,推荐用于复杂的图表、程序化操作以及将图表嵌入到应用程序中。
  • 跨平台: 可以在 Windows、macOS 和 Linux 上运行。
  • 可嵌入: 可以使用各种 GUI 工具集(Tkinter、PyQt、WxPython)和 Web 框架嵌入到应用程序中。

Matplotlib 在很大程度上依赖于 NumPy 进行数值运算,因此几乎总是与 NumPy 结合使用。

Matplotlib 最初由 John D. Hunter 于 2003 年创建。在他于 2012 年去世后,它成为了一个社区驱动的项目,由一个大型贡献者团队维护和开发。它通过定期更新和新功能不断发展。

你会遇到两种主要的 Matplotlib 使用方式:

  1. matplotlib.pyplot: 一系列函数(如 plt.plot()、plt.title() 等),它们隐式地操作一个“当前”图形 (figure) 和轴 (axes)。这种方式易于学习,非常适合快速绘图。
  2. 面向对象 API: 显式创建和管理 Figure 和 Axes 对象(例如 fig, ax = plt.subplots(); ax.plot(...))。它提供了更多的控制,更适合创建复杂图形或编写可复用代码,通常是非交互式使用的推荐方法。

本教程将介绍这两种方法,并在更复杂的场景中强调面向对象 API,因为它提供了更好的灵活性和清晰度。

(注意:较旧的 pylab 接口,它将 pyplot 和 NumPy 导入到全局命名空间中,由于会造成命名空间污染,现在强烈不推荐使用。)