matplotlib / matplotlib/ipympl
Interactive graph in jupyterlab-rise presentation
Nessuno ha ancora preso questa issue.
- Lingua principale
- Jupyter Notebook
- Stelle
- 1.7k
- Fork
- 234
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
For a lecture, I produced a slide deck in jupyter lab with interactive graphs and presented it as a slide show with jupyterlab-rise. With the latest version of ipympl, the slide show only gives a static graph. Sadly I cannot reproduce the working setup I used last year, which makes it hard to investigate.
Minimal example notebook:
```python
%matplotlib widget
import matplotlib.pyplot as plt
plt.plot([1,2,3], [4,5,6])
```
## with ipympl 0.9.8
Opening the notebook with `uv run --with ipympl==0.9.8 --with matplotlib==3.10.8 --with matplotlib-inline==0.2.1 --with jupyterlab_rise jupyter lab` (the latest versions as of now) and running the cell gives a working interactive plot, but when opening the presentation, it shows a static image instead:
(You can tell that the right plot in the screenshot misses the resize handler, I can also tell that it is a plain `` tag with a png data URL instead of a ``, which seems to be the fallback option.)
ipympl 0.9.3 already shows the same behavior of falling back to a static image, but 0.9.0 is different:
## with ipympl 0.9.0
Opening the notebook with `uv run --with ipympl==0.9.0 --with matplotlib'<'3.7 --with matplotlib-inline==0.1.7 --with jupyterlab_rise jupyter lab` and running the cell gives a working interactive plot, but when opening the presentation, CPU usage goes up to 100%, the two plots constantly redraw and become unusuable:
After countless tries, I once saw the redrawing resolve, with both plots becoming partly usable: I could hover over either of the plots and have the coordinates be displayed beneath, but as soon as I tried drawing a Zoom rectangle, it went into a busy loop again. It seems there is some race condition that can stop the redrawing if lucky.
## with ipywidgets 7.8.5
Downgrading ipywidgets instead of ipympl also works, with the same busy loop problem as with ipympl 0.9.0. Downgrading ipywidgets has the advantage that ipympl, matplotlib and matplotlib-inline can be kept at the most recent version:
```
uv run --with ipympl==0.9.8 --with matplotlib==3.10.8 --with matplotlib-inline==0.2.1 --with jupyterlab_rise --with ipywidgets==7.8.5 jupyter lab
```
## Versions
For the first example, these are the versions:
```bash
python -c "import sys; print('\n',sys.version); import ipympl; print('ipympl version:', ipympl.__version__)" && jupyter --version && jupyter nbextension list && jupyter labextension list
```
-->
```
3.12.3 (main, Nov 6 2025, 13:44:16) [GCC 13.3.0]
ipympl version: 0.9.0
Selected Jupyter core packages...
IPython : 8.38.0
ipykernel : 7.1.0
ipywidgets : 7.8.5
jupyter_client : 8.8.0
jupyter_core : 5.9.1
jupyter_server : 2.17.0
jupyterlab : 4.5.2
nbclient : 0.10.4
nbconvert : 7.16.6
nbformat : 5.10.4
notebook : 7.5.2
qtconsole : not installed
traitlets : 5.14.3
JupyterLab v4.5.2
/home/.../jupyter/labextensions
jupyterlab_pygments v0.3.0 enabled OK (python, jupyterlab_pygments)
jupyter-matplotlib v0.11.0 enabled OK
jupyterlab-rise v0.43.1 enabled OK (python, jupyterlab_rise)
@jupyterlab/mathjax3-extension v4.3.0 enabled X (python, jupyterlab-mathjax3)
@jupyter-notebook/lab-extension v7.5.2 enabled OK
@jupyter-widgets/jupyterlab-manager v3.1.11 enabled OK (python, jupyterlab_widgets)
The following extensions may be outdated or specify dependencies that are incompatible with the current version of jupyterlab:
@jupyterlab/mathjax3-extension
If you are a user, check if an update is available for these packages.
If you are a developer, re-run with `--verbose` flag for more details.
```
(I assume mathjax3 is not the issue here since the plot works fine outside of RISE.)
I'm not sure whether this behavior is due to ipympl or jupyterlab-rise. I assume that RISE is to blame for showing the static fallback PNG, but I'm not so sure about the 100% CPU usage / busy loop. I'd be happy about any hints on what could be a working combination of versions, or any hints on how to work around the endless redrawing, if this rings a bell with anybody. I'm also happy to do further investigations if helpful.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia eseguendo il notebook minimo in JupyterLab con jupyterlab-rise e confronta ipympl 0.9.8, ipympl 0.9.0 e ipywidgets 7.8.5 usando i comandi e le versioni riportati qui. Verifica se RISE o l’integrazione dei widget causano il fallback a un PNG statico e il ciclo di ridisegno continuo; il lavoro è completato quando la presentazione mantiene un grafico interattivo senza un uso eccessivo della CPU.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- jupyter-notebook, python
- Ambito
- frontend
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 42/100