matplotlib / matplotlib/ipympl
Follow-up to #343 - Embedding Static Plots
- Dominant language
- Jupyter Notebook
- Stars
- 1.7k
- Forks
- 234
- PR merge metrics
- No merged PRs in 30d
Description
#343 was a huge step forward for saving the state of plots in notebooks. But it doesn't truly reproduce the state of the notebook that the author was looking at for these two cases:
1. If widget state is saved then only a blank figure renders (https://github.com/matplotlib/ipympl/pull/343#issuecomment-920167467)
2. Any updates to the figure after the initial render are not saved in the notebook (https://github.com/matplotlib/ipympl/pull/343#issuecomment-921008926)
I think part 2 is very important to be able to tell a story using a notebook. e.g. If I make some plots with a slider, get them just so and then run nbconvert I don't think I would faithfully reproduce the state of the notebook as I was looking at it.
**Part 1** should be solvable if we include the PNG as part of the widget model
**Part 2** I think a reasonable tradeoff would be to only update the static plot whenever the notebook is saved. This would require the frontend of ipywidgets (jupyterlab-manager, and widgetsnbextension) to listen to notebook save signals and pass them to the ipympl frontend, which would in turn let the backend know to update the mimebundle.
@martinRenou how hard do you think the second one (saving) would be to fix? To me that feels like a very important thing to hit.
Contributor guide
Research direction
Start by reading how notebook save signals are handled in jupyterlab-manager and widgetsnbextension, then trace the ipympl frontend-to-backend path for updating the mimebundle. Check the widget model handling for the PNG case. Done means saved widget state renders instead of a blank figure and post-render updates survive notebook save and nbconvert.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- jupyter, jupyter-notebook
- Domain
- backend, frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100