matplotlib / matplotlib/ipympl
Partial or Glitchy Interactivity
Personne n'a encore pris cette issue.
- Langage dominant
- Jupyter Notebook
- Étoiles
- 1.7k
- Forks
- 234
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
## Partial or Glitchy Interactivity
In my dev. environment, interactive figures:
- fail to show resize handle, figure header and footer are never displayed
- do not respect (but do not error) settings for:
- fig.canvas.header_visible
- fig.canvas.footer_visible
- fig.canvas.resizable
- completely disappear on mouse click or drag (no toolbar option selected) and never return on selecting toolbar Reset option
- toolbar panning/zooming work fine
- playing with figure.set_frameon(False) seems to cure the disappearing figure issue
My production environment (with [as far as I can tell] same versions) works as expected:
- shows and respects resize handle, figure header and footer are displayed
- respects settings for:
- fig.canvas.header_visible
- fig.canvas.footer_visible
- fig.canvas.resizable
- does not disappear on mouse click or drag (no toolbar option selected)
- toolbar panning/zooming work fine
Both environments are using the classic notebook experience (not Lab), the biggest/most obvious difference being that production is a TLJH installation (i.e. JupyterHub spawning single-user notebooks), but all the notebook package versions across environments appear to be in sync (see below), so unless spawning affects things silently, I'd be surprised if that's the issue.
I've borrowed and executed this code (from https://github.com/matplotlib/ipympl/issues/203) as a test to make sure there's nothing wonky in my code and because it incorporates the ioff/ion pattern I'm reliant on:
```
%matplotlib widget
from IPython.display import display # this is automatically imported in the notebook anyway
from ipywidgets.widgets import HBox
import matplotlib.pyplot as plt
from scipy.misc import face
plt.ioff() # turn off interactive mode so figure doesn't show
fig1, ax1 = plt.subplots()
fig2, ax2 = plt.subplots()
plt.ion() # figure still doesn't show
ax1.imshow(face())
ax2.imshow(face(True))
display(HBox([fig1.canvas, fig2.canvas]))
```
Executing this code exhibits all of the issues I've described, i.e. it does not work (as described above) in development, but does work in production.
## Versions
### Development environment:
```
3.6.9 (default, Jan 15 2020, 16:16:15)
[GCC 6.3.0 20170516]
ipympl version: 0.5.6
jupyter core : 4.6.3
jupyter-notebook : 6.0.3
qtconsole : not installed
ipython : 7.14.0
ipykernel : 5.3.0
jupyter client : 6.1.3
jupyter lab : not installed
nbconvert : 5.6.1
ipywidgets : 7.5.1
nbformat : 5.0.6
traitlets : 4.3.3
Known nbextensions:
config dir: /home/dschofield/.jupyter/nbconfig
notebook section
jupyter-js-widgets/extension enabled
- Validating: OK
config dir: /home/dschofield/.local/share/virtualenvs/goldmine-hCKJOvFR/etc/jupyter/nbconfig
notebook section
jupyter-matplotlib/extension enabled
- Validating: OK
voila/extension enabled
- Validating: OK
jupyter-js-widgets/extension enabled
- Validating: OK
qgrid/extension enabled
- Validating: OK
JupyterLab v1.0.0
Known labextensions:
app dir: /home/dschofield/.local/share/jupyter/lab
@jupyter-widgets/jupyterlab-manager v1.1.0 enabled OK
bqplot v0.5.1 enabled OK
ipyevents v1.7.0 enabled OK
ipysheet v0.4.3 enabled OK
ipytree v0.1.3 enabled OK
ipyvolume v0.5.2 enabled OK
jupyter-leaflet v0.11.4 enabled OK
jupyter-matplotlib v0.4.2 enabled OK
jupyter-threejs v2.1.1 enabled OK
jupyter-vue v1.0.0 enabled OK
jupyter-vuetify v1.1.1 enabled OK
jupyterlab-datawidgets v6.2.0 enabled OK
pywwt v0.7.0 enabled OK
```
### Production environment:
```
3.6.7 | packaged by conda-forge | (default, Feb 28 2019, 09:07:38)
[GCC 7.3.0]
ipympl version: 0.5.6
jupyter core : 4.6.3
jupyter-notebook : 6.0.3
qtconsole : not installed
ipython : 7.14.0
ipykernel : 5.3.0
jupyter client : 6.1.3
jupyter lab : 1.2.5
nbconvert : 5.6.1
ipywidgets : 7.5.1
nbformat : 5.0.6
traitlets : 4.3.3
Known nbextensions:
config dir: /opt/tljh/user/etc/jupyter/nbconfig
notebook section
jupyter-matplotlib/extension enabled
- Validating: OK
nbresuse/main enabled
- Validating: OK
voila/extension enabled
- Validating: OK
jupyter-js-widgets/extension enabled
- Validating: OK
qgrid/extension enabled
- Validating: OK
tree section
jupyter_server_proxy/tree enabled
- Validating: OK
JupyterLab v1.2.5
Known labextensions:
app dir: /opt/tljh/user/share/jupyter/lab
@jupyter-widgets/jupyterlab-manager v1.1.0 enabled OK
jupyter-matplotlib v0.7.2 enabled OK
```
I'm assuming that the differences in Lab extensions are not of concern here because I'm not using Lab, but before I go about testing that assumption, expert insight is welcomed.
Thanks in advance.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par exécuter la reproduction %matplotlib widget fournie avec les versions de développement et de production indiquées, puis comparez les extensions Notebook et les extensions Lab affichées dans le rapport. La tâche est terminée lorsque les figures interactives conservent leur header, leur footer, leur resize handle et leurs paramètres de visibilité, et ne disparaissent plus après une interaction avec la souris ou Reset.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- jupyter-notebook, python
- Domaine
- frontend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100