Matplotlib实践学习笔记

张开发
2026/4/19 10:10:53 15 分钟阅读

分享文章

Matplotlib实践学习笔记
第二章 艺术画笔见乾坤一.Matplotlib的概念Matplotlib 是 Python 生态中最核心、最基础的 2D 数据可视化库被称为 Python 数据可视化的 “泰斗”。核心能力生成出版级质量的静态、动态、交互式图表支持折线图、柱状图、散点图、饼图等几乎所有常见图表类型。应用场景可用于 Python 脚本、Jupyter Notebook、Web 应用、GUI 工具等是 pandas、seaborn 等高级可视化库的底层基础这些库本质是对 Matplotlib 的封装。核心优势高度可定制化能精准控制图表的每一个细节线条、颜色、标签、字体等是数据分析师、科研人员的必备工具。二、一个最简单的绘图例子Matplotlib 绘图的核心是两个层级Figure画布整个图表的最外层容器相当于我们画图的 “纸”可以是窗口、Jupyter 单元格等。Axes坐标轴 / 子图画在 Figure 上的、带坐标系的绘图区域一个 Figure 可以包含 1 个或多个 Axes。简单来说Figure 是画布Axes 是画布上的画纸所有的图表元素线条、标签、刻度都画在 Axes 上。1.面向对象式这是 Matplotlib 官方推荐的标准写法适合复杂图表和精细化控制# 1. 导入依赖库 import matplotlib.pyplot as plt import numpy as np # 2. 创建画布(figure)和坐标轴(axes) fig, ax plt.subplots() # 默认创建1个Axes也可指定行列数如 plt.subplots(2,1) 创建2行1列的子图 # 3. 在Axes上绘制折线图 # plot(横坐标列表, 纵坐标列表) ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) # 4. 显示图表Jupyter中可省略脚本中必须加 plt.show()运行效果2.pyplot 式这种写法模仿 MATLAB 的语法自动创建 Axes适合快速绘图、简单场景。# 导入依赖库 import matplotlib.pyplot as plt # 直接调用 plt.plot() 绘图Matplotlib 自动创建 Figure 和 Axes plt.plot([1, 2, 3, 4], [1, 4, 2, 3]) # 显示图表 plt.show()运行效果三、Figure 的组成1.Matplotlib 的图表是一个层级化的容器结构从顶层到底层依次为层级名称核心作用对应操作顶层Figure画布整个图表的最外层容器容纳所有绘图元素plt.figure()/fig plt.figure()核心Axes子图 / 坐标轴区域Matplotlib 的核心一个 Figure 可包含 1 个或多个 Axes是真正的绘图区域fig.subplots()/ax plt.subplots()从属Axis坐标轴Axes 的下属层级处理坐标轴、网格等相关元素ax.xaxis/ax.yaxis底层Tick刻度Axis 的下属层级处理刻度、刻度标签等细节ax.xaxis.set_major_locator()等2.完整图表的所有元素1. 基础容器类Figure最外层画布控制图表大小、背景色等Axes子图区域所有绘图操作的核心载体Spine坐标轴脊线包围 Axes 的四条边框可隐藏、修改样式ax.spines2. 坐标轴与刻度类Axisx/y 轴坐标轴对象控制轴的范围、样式Major tick主刻度主刻度线对应大的数值标记ax.yaxis.set_major_locatorMinor tick次刻度次刻度线用于更精细的刻度划分ax.yaxis.set_minor_locatorMajor/Minor tick label刻度标签刻度上的文字可自定义格式set_major_formatterxlabel /ylabel坐标轴标签坐标轴的说明文字ax.set_xlabel()/ax.set_ylabel()3. 数据与装饰类Line线条折线图的线条通过ax.plot()绘制Markers标记散点图的标记点通过ax.scatter()绘制Title标题图表的标题ax.set_title()Grid网格线背景网格辅助读数ax.grid()Legend图例标注不同数据系列的含义ax.legend()四、两种核心绘图接口详解Matplotlib 提供了两种完全等效的绘图方式适用于不同场景1. 面向对象式OO 模式核心逻辑显式创建figure和axes对象所有操作都通过对象方法完成逻辑清晰、可维护性高。import matplotlib.pyplot as plt import numpy as np # 1. 生成数据0到2之间取100个等间距点 x np.linspace(0, 2, 100) # 2. 显式创建figure和axes fig, ax plt.subplots() # 3. 在axes上绘制三条曲线 ax.plot(x, x, labellinear) # 一次函数 yx ax.plot(x, x**2, labelquadratic) # 二次函数 yx² ax.plot(x, x**3, labelcubic) # 三次函数 yx³ # 4. 配置图表元素 ax.set_xlabel(x label) # x轴标签 ax.set_ylabel(y label) # y轴标签 ax.set_title(Simple Plot) # 图表标题 ax.legend() # 显示图例 # 5. 显示图表脚本中必须Jupyter中可省略 plt.show()运行效果优势逻辑清晰每个操作都明确作用于哪个axes多子图场景下不会混淆高度可定制适合复杂图表、科研绘图、生产环境符合 Python 面向对象的编程思想可维护性强2. pyplot 式MATLAB 风格核心逻辑依赖pyplot自动创建figure和axes所有操作都通过plt.xxx()完成代码极简。import matplotlib.pyplot as plt import numpy as np # 1. 生成数据 x np.linspace(0, 2, 100) # 2. 直接调用plt.plot绘图自动创建figure和axes plt.plot(x, x, labellinear) plt.plot(x, x**2, labelquadratic) plt.plot(x, x**3, labelcubic) # 3. 配置图表元素 plt.xlabel(x label) plt.ylabel(y label) plt.title(Simple Plot) plt.legend() # 4. 显示图表 plt.show()运行效果优势代码极简一行绘图适合快速探索数据、简单可视化语法和 MATLAB 高度相似MATLAB 用户上手无压力劣势多子图场景下容易混淆当前操作的axes不适合复杂定制代码可维护性差大型项目不推荐3.两种接口的核心对比对比维度面向对象式OO 模式pyplot 式MATLAB 风格创建方式显式创建fig, ax plt.subplots()隐式自动创建无需手动声明操作方式所有操作通过ax.xxx()完成所有操作通过plt.xxx()完成代码复杂度稍多需手动创建对象极简一行绘图灵活性极高支持多子图、精细化控制一般简单场景够用适用场景复杂图表、科研绘图、生产环境快速探索、简单可视化、MATLAB 迁移可维护性高逻辑清晰不易出错低多子图易混淆官方推荐官方推荐标准写法仅用于快速绘图

更多文章