Jupyter Notebook 中 Matplotlib 动态刷新与 Backend 配置指南

Ruby
Ruby
发布时间:2026-10-13 | 5人浏览过
原创

本文详解在Jupyter Notebook中使用Matplotlib时遇到的图表显示异常及动态刷新问题。通过介绍clear_output方法实现图表动态更新,并深入解析Matplotlib Backend机制,包括Qt5Agg、nbAgg等后端的选择与激活方式,帮助用户解决图表无法显示或显示位置错误的问题,提供完整的交互模式配置方案。

Jupyter Notebook 中 Matplotlib 动态刷新实现

直接查看代码实现部分。


import matplotlib
%matplotlib inline
from IPython import display

在需要刷新图表的位置,完成绘图后添加以下代码。

调用 display.clear_output(wait=True) 以清除旧图并刷新显示。

Matplotlib Backend 配置与图表显示问题

补充知识:在 Jupyter Notebook 中绘制并显示 Matplotlib 动态图。

有时 Matplotlib 的绘图无法正常显示在 Notebook 中,这通常与 Backend(后端)配置有关。

首先启动 Notebook,输入以下命令检查当前环境。

%pylab

查看输出的 Matplotlib Backend,例如我的输出显示为:

Qt5Agg

这是当前的渲染方式,使用的是 qt5 渲染。可以在绘图前插入代码段来激活它。

%matplotlib qt5

这样即可显示图表,但图表会显示在 Notebook 外部。如果尝试使用 %matplotlib inline,图表显示可能不正常,具体原因尚不明确。

如果输出的 Backend 类型不同,建议参考相关资料,直接输入对应的绘图激活命令。

Matplotlib 基础概念与 Backend 详解

补充知识:Matplotlib 常用 Backend 列表。

Matplotlib 简明教程(一):基础概念。

Matplotlib 是一个用于绘制图表的 Python 库,可用于处理图片和绘制统计类图表。

本文分多篇介绍,第一篇旨在说明 Matplotlib 的一些基本使用方法。

基本组成结构。

参考官网图片说明 Matplotlib 图表的基本组成成分。

figure:整个画布,包含一个或多个 axes。

axes:画布中的某一个图表,包含一个 plot。

artist:图中所示的元素,包括 label、line 等,也包括 plot。

Backend(后端)。

每种输出能力称为一种 backend,类似于渲染器。

IPython 中的魔法语句 %matplotlib xxxx 用于选择 backend。

Backend 的优先级选取顺序如下:

matplotlibrc 文件中的 backend 设置。

使用 MPLBACKEND 环境变量。

使用 matplotlib.use() 函数,需在导入 pyplot 前使用。

Backend 从种类上分为可交互型(user interface)和不可交互型(hardcopy)。若希望查看本地支持的 backend,可执行相关命令。


matplotlib.rcsetup.interactive_bk # 可交互型
matplotlib.rcsetup.non_interactive_bk # 不可交互型
matplotlib.rcsetup.all_backends # 所有 backend

获取当前 Backend 可使用 matplotlib.pyplot.get_backend()。

常用 Backend 已在文末附上。

交互模式配置与常用 Backend 列表

交互模式。

“交互模式”代表图表在绘制后可动态变化,例如预设动画或用户操作。

开启交互模式后,绘制的图表会自动更新和绘制。若希望手动更新图表,使用 draw() 函数;在非交互模式下,当所有后台绘制完成后,需使用 show() 函数才能展示最终图表。

若希望使用交互模式,需选用可交互型的 backend。

通过 matplotlib.interactive() 设置交互模式的开启与关闭。

通过 matplotlib.is_interactive() 查询当前是否支持交互模式。

也可通过 matplotlib.pyplot.ion() 和 matplotlib.pyplot.ioff() 来开启或关闭交互模式。

附:常用 Backend 列表。

不可交互型。

AGG:渲染为 png 文件。

PS:渲染为 ps 文件。

PDF:渲染为 pdf 文件。

SVG:渲染为 svg 文件。

Cairo:使用 Cairo 引擎渲染。

可交互型。

Qt5Agg:使用 Qt5 渲染,IPython 中可使用 %matplotlib qt5。

Qt4Agg:使用 Qt4 渲染,IPython 中可使用 %matplotlib qt4。

ipympl:使用 ipympl 库,IPython 中可使用 %matplotlib ipympl。

macosx:使用 Cocoa 画布渲染,IPython 中可使用 %matplotlib osx。

nbAgg:Jupyter Notebook 中使用的 backend,Jupyter 中使用 %matplotlib notebook 来激活。

WXAgg:使用 wxWidgets 库来渲染,IPython 中可使用 %matplotlib wx。

inline:严格来说并非一个 backend,而是 IPython 中的一个语法,表示将图表嵌入笔记中,使用 %matplotlib inline。

以上关于 Jupyter Notebook 实现 Matplotlib 图动态刷新的内容分享到此结束,希望能给大家一个参考,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表