Matplotlib是Python编程语言的2D绘图库,由John Hunter于2003年创建,遵循PSF许可证开源协议。它支持生成出版级质量的静态、动态及交互式图表,覆盖折线图、散点图、柱状图等常见类型,并具备跨平台交互环境与多种硬拷贝格式输出能力。其核心功能通过简洁的代码调用实现,提供坐标轴定制、网格线调整、图例设置等基础绘图配置,且支持通过配置文件或动态修改参数。
该库作为Python科学计算栈的重要组成部分,持续迭代更新并保持活跃的开发者社区。自2.0版本起逐步优化并彻底修改了默认样式,并在后续的3.0等版本中持续改进,增强了对中文字体、三维图形及复杂数据结构的支持,并引入了如循环色彩映射、改进的默认后端选择等新特性。用户可通过或安装,配合NumPy、Pandas等数据处理工具实现高效可视化流程,同时也是Seaborn等高级可视化库的底层依赖。其面向对象的设计模式(Figure-Axes架构)与MATLAB风格接口(模块)兼顾灵活性与易用性,广泛应用于数据分析、学术研究等领域。2月,该项目因维护者遵循“仅接受人类贡献者”的政策而拒绝了一个AI代理提交的代码合并请求,随后该AI代理发文攻击项目维护者,这一事件引发了关于开源项目如何应对自主AI智能体的广泛讨论。
Matplotlib采用面向对象设计,其核心架构基于Figure(图形)-Axes(坐标轴)模型,并提供面向对象的显式接口与类似MATLAB的pyplot隐式接口两种主要编程方式。Figure是所有绘图元素的顶层容器,而Axes是位于Figure内的实际绘图区域,负责具体的图表绘制和数据空间管理。
matplotlib.figure.Figure类是顶层Artist,作为所有绘图元素的容器,包含figsize、dpi、facecolor等属性,并提供add_axes、add_subplot、colorbar、savefig等关键方法。Axes类是位于Figure内的绘图区域,包含坐标轴(Axis)、刻度、标签等组件,并拥有set_title、set_xlabel、plot、scatter等方法用于绘制和定制图表。
Artist是可见元素的基础类,包括Figure、Axes、文本、线条等。Axis是类似数字线的对象,负责设置图形界限并生成刻度及刻度标签。
后端(Backend)系统负责将前端绘图指令渲染到不同输出目标,主要分为交互式后端(如Tkinter、Qt)和非交互式后端(如Agg生成PNG,PS生成PostScript)。后端可通过rcParams["backend"]、环境变量MPLBACKEND或matplotlib.use()函数进行选择。
交互模式通过matplotlib.pyplot.ion()开启,在此模式下Pyplot函数会自动将图形绘制到屏幕;非交互模式则在脚本中使用show()函数来显示图形并阻止执行。
rcParams是Matplotlib核心的全局配置系统,支持动态修改绘图样式和默认行为(如字体、颜色、线宽等)。其配置优先级为:代码中的设置优先级最高,其次为当前目录下的matplotlibrc文件,再次为用户级配置文件,最后为全局配置文件。