matplotlib / matplotlib/ipympl

Figure does not show without explicit plt.show()

Open
#609 6 comments 0 reactions 0 assignees View on GitHub
Dominant language
Jupyter Notebook
Stars
1.7k
Forks
234
PR merge metrics
No merged PRs in 30d

Description

## 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
````

````python
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)

```

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the two notebook cells with `%matplotlib widget`, repeated execution, and the larger CSV described in the report; compare with `%matplotlib inline`. The payload names no repository files or tests. Done means the interactive figure reliably appears without an explicit `plt.show()` call.

Written by the indexing model from the issue text.

Assessment

Tech stack
jupyter-notebook, pandas, python
Domain
frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.