matplotlib / matplotlib/ipympl

Figure does not show without explicit plt.show()

未关闭
#609 6 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

主要语言
Jupyter Notebook
星标
1.7k
派生
234
PR 合并指标
30 天内没有已合并 PR

描述

Report

Under some circumstances when using ipympl the figure does not show up in the output area unless plt.show() is explicitly called.

At the moment the reproduction is a bit finicky. As a minimal example these cells, when executed once show a nice empty plot:

%matplotlib widget

from matplotlib import pyplot as plt
import pandas as pd
from io import StringIO
fig, axes = plt.subplots(figsize=(6, 5.5))

s = """1,2,3
1,2,3"""
csv = StringIO(s)
df = pd.read_csv(csv)

# with this it always works:
# plt.show()

When changing the line to read a more complex dataset df = pd.read_csv(file_with_1MB) the empty figure sometimes does not show up anymore. If I add an explicit plt.show() at the end the figure always appears as normal.

It is not directly tied to the larger data file though, even the example above sometimes shows the same behavior after the second cell is re-executed several times. When using %matplotlib inline no issues or errors occur.

I am somewhat certain that this behavior is a regression, as it was not occurring in earlier versions of the Jupyterlab/ipympl ecosystem (with Jupyterlab/ipympl older than approximately six months ago).

Any hints how to debug this a bit better would be appreciated.

Versions

This issues occurs with a recent jupyterlab / ipympl installation (and using Chrome 142.0.7444.60). Here, this is on Windows 11 but the issue also occurs on Linux systems.

 3.13.9 | packaged by conda-forge | (main, Oct 22 2025, 23:12:41) [MSC v.1944 64 bit (AMD64)]
ipympl version: 0.9.8

Selected Jupyter core packages...
IPython          : 9.7.0
ipykernel        : 7.1.0
ipywidgets       : 8.1.8
jupyter_client   : 8.6.3
jupyter_core     : 5.9.1
jupyter_server   : 2.17.0
jupyterlab       : 4.4.10
nbclient         : 0.10.2
nbconvert        : 7.16.6
nbformat         : 5.10.4
notebook         : 7.4.4
qtconsole        : not installed
traitlets        : 5.14.3

C:\tools\miniconda3\Library\envs\jupyter\share\jupyter\labextensions
        jupyter-matplotlib v0.11.8 enabled ok
        jupyterlab_pygments v0.3.0 enabled ok (python, jupyterlab_pygments)
        @jupyter-notebook/lab-extension v7.4.7 enabled ok
        @jupyter-widgets/jupyterlab-manager v5.0.15 enabled ok (python, jupyterlab_widgets)
        @mbektas/notebook-intelligence v1.1.2 enabled ok (python, notebook_intelligence)

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

首先,使用 %matplotlib widget 重现两个 notebook 单元格,重复执行,并使用报告中描述的更大 CSV;与 %matplotlib inline 进行比较。payload 未列出任何仓库文件或测试。完成的标准是:无需显式调用 plt.show(),交互式图形也能可靠显示。

由索引模型根据 Issue 内容生成。

评估

技术栈
jupyter-notebook, pandas, python
领域
frontend
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
冷清
描述清晰度
需要澄清
新手友好度
42/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。