大家好,我是木木。
今天给大家分享一个基础绘图的 Python 库,matplotlib。
matplotlib
matplotlib 是 Python 可视化生态的基石。很多库都构建在它之上,或者至少借用了它的风格和对象模型。它适合从快速折线图、散点图,到论文图、报表图、批量生成图片的脚本化场景。虽然 API 有历史包袱,但胜在稳定、可控、资料丰富,遇到细节排版问题时通常能找到解决办法。
项目地址:https://github.com/matplotlib/matplotlib
官方文档:https://matplotlib.org
三大特点
生态基础
大量数据科学库都能直接输出到 Matplotlib Axes。
控制细致
坐标轴、图例、样式、布局和导出格式都能精细调整。
服务端友好
Agg 后端适合在无 GUI 环境批量生成 PNG、SVG、PDF。
最佳实践
安装方式:pip install matplotlib。建议先用小数据验证图表对象和输出结构,再把样式、导出和嵌入流程固定到项目模板里。
第一段代码解决的问题是:创建最小可运行图表对象,并确认库版本和核心图形元素。
fromimportlib.metadataimportversionimportmatplotlibmatplotlib.use("Agg")importmatplotlib.pyplotaspltfig,ax=plt.subplots()ax.plot([1,2,3],[4,6,5],marker="o")print("matplotlib:",version("matplotlib"))print("lines:",len(ax.lines))print("title before:",ax.get_title()or"<empty>")
第二段代码解决的问题是:加入更接近真实业务的字段、布局或图层配置。
importioimportmatplotlibmatplotlib.use("Agg")importmatplotlib.pyplotaspltfig,ax=plt.subplots()ax.scatter([1,2,3],[3,5,4],c=[10,20,30])ax.set(xlabel="x",ylabel="y",title="scatter")buf=io.BytesIO();fig.savefig(buf,format="png")print("collections:",len(ax.collections))print("png bytes:",len(buf.getvalue()))
环境与版本信息
本文示例使用 Python 3.11.0,演示代码在本地真实运行;图形类示例避免打开 GUI 窗口,适合截图和自动化验证。
高级功能
Matplotlib 的进阶重点是理解 Figure、Axes 和 Artist。只要掌握对象层级,复杂图的调整会从“试参数”变成有方向地修改对象。
进阶示例解决的问题是:把图表配置导出、组合或扩展到更适合工程使用的结构。
importmatplotlibmatplotlib.use("Agg")importmatplotlib.pyplotaspltplt.style.use("ggplot")fig,axes=plt.subplots(1,2,figsize=(5,2))axes[0].bar(["A","B"],[3,5])axes[1].plot([0,1],[1,0])print("axes:",len(fig.axes))print("style facecolor:",axes[0].get_facecolor())
适用场景
适合科研绘图、报表导出、批量图片生成、需要精细控制样式的静态图,以及其他库的底层绘图承载。
不适用场景
不适合默认追求浏览器交互的 dashboard,或希望所有图表都自动响应前端状态的大型 Web 应用。
上线检查
- 明确图表是静态导出、Notebook 交互、桌面 GUI 还是 Web 嵌入。
总结
matplotlib 仍然经典。它不是最炫的库,但在稳定、可控和可导出这几件事上很难绕开。