matplotlib / ipympl

Matplotlib Jupyter Integration
https://matplotlib.org/ipympl/
BSD 3-Clause "New" or "Revised" License
1.59k stars 225 forks source link

occasional graphical corruption when manipulating plots using the zoom and pan widgets #566

Open RGD2 opened 1 month ago

RGD2 commented 1 month ago

Describe the issue

Manipulating fairly large (~M points) plots,. found occasionally that the redraw would fail, then would leave old pixels in place.

Using the 'Back to previous view' / 'Forward to next view' appears to fix the corruption, otherwise it just sticks around until the figure is redrawn by re-running the cell producing it. I.E., once it appears, hitting the 'home' button does not clear it.

Affects both the plot as well as the axes, with the axes becoming unreadable. Saving the corrupted pixels using the 'Download plot' button works - in that the saved png includes the pixel corruption.

Versions


 3.12.3 (main, Jul 15 2024, 15:34:06) [GCC 12.2.0]
ipympl version: 0.9.4
Selected Jupyter core packages...
IPython          : 8.26.0
ipykernel        : 6.29.5
ipywidgets       : 8.1.5
jupyter_client   : 8.6.2
jupyter_core     : 5.7.2
jupyter_server   : 2.14.2
jupyterlab       : 4.2.3
nbclient         : 0.10.0
nbconvert        : 7.16.4
nbformat         : 5.10.4
notebook         : not installed
qtconsole        : not installed
traitlets        : 5.14.3
usage: jupyter [-h] [--version] [--config-dir] [--data-dir] [--runtime-dir] [--paths] [--json] [--debug] [subcommand]

Jupyter: Interactive Computing

positional arguments:
  subcommand     the subcommand to launch

options:
  -h, --help     show this help message and exit
  --version      show the versions of core jupyter packages and exit
  --config-dir   show Jupyter config dir
  --data-dir     show Jupyter data dir
  --runtime-dir  show Jupyter runtime dir
  --paths        show all Jupyter paths. Add --json for machine-readable format.
  --json         output paths as machine-readable json
  --debug        output debug information about paths

Available subcommands: dejavu events execute kernel kernelspec lab labextension labhub migrate nbconvert run server troubleshoot trust

Jupyter command `jupyter-nbextension` not found.

I assume you meant || jupyter labextension list not &&.

JupyterLab v4.2.3
/home/rgd2/.pyenv/versions/3.12.3/share/jupyter/labextensions
        jupyterlab_pygments v0.3.0 enabled OK (python, jupyterlab_pygments)
        jupyter-matplotlib v0.11.4 enabled OK
        @jupyter-widgets/jupyterlab-manager v5.0.13 enabled OK (python, jupyterlab_widgets)

Other labextensions (built into JupyterLab)
   app dir: /home/rgd2/.pyenv/versions/3.12.3/share/jupyter/lab
RGD2 commented 1 month ago

Browser version: Google Chrome 129.0.6668.90 (Official Build) (64-bit) (cohort: Stable) on win64, jupyterlab running from pip install out of pyenv python install on debian stable.

RGD2 commented 1 month ago

Example of corruption: Figure 5

ianhi commented 1 month ago

I've experienced this also and found it super annoying. We've spent awhile looking into it and there is a potential fix here: https://github.com/matplotlib/matplotlib/pull/27160, issue described here: https://github.com/matplotlib/matplotlib/issues/19116. but it would require some changes in ipympl that I don't have the bandwidth to implement. However I would be happy to review anyone pushing a such a fix.