matplotlib / matplotlib/ipympl

Matplotlib figures are not redrawn in the cell in which they are created

Aperta
#258 2 commenti 1 reazione 0 assegnatari Vedi su GitHub

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

## Describe the issue

Using an interactive figure's `canvas.draw()` method does not update the figure if it was created in the same cell as the draw call.

Figure created in the same cell:
![Same cell](https://user-images.githubusercontent.com/1909532/90080052-d39ae300-dcc6-11ea-90cb-1bf3429548c6.gif)

Figure created in another cell:
![different cell](https://user-images.githubusercontent.com/1909532/90080105-02b15480-dcc7-11ea-965d-14114cb27c96.gif)

## Reproduce

1. Open a new notebook in JupyterLab or Notebook
2. Insert the following code:
````
import matplotlib.pyplot as plt
import time

%matplotlib widget

fig = plt.figure()

for i in range(5):
x = list(range(i+2))
xx = [x**2 for x in x]
plt.clf()
plt.plot(x, xx)
fig.canvas.draw()

time.sleep(1)
````
3. Run the cell and observe that the plot does not show until the loop has exited.

Optional:
1. Move the for loop to a separate cell from the figure creation
2. Run cell and observe plot updates during the loop

This can be reproduced using the [scipy notebook docker stack](https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html#jupyter-scipy-notebook).

## Versions

```
3.8.5 | packaged by conda-forge | (default, Jul 31 2020, 02:39:48)
[GCC 7.5.0]
ipympl version: 0.5.7
jupyter core : 4.6.3
jupyter-notebook : 6.0.3
qtconsole : not installed
ipython : 7.17.0
ipykernel : 5.3.4
jupyter client : 6.1.6
jupyter lab : 2.1.5
nbconvert : 5.6.1
ipywidgets : 7.5.1
nbformat : 5.0.7
traitlets : 4.3.3
Known nbextensions:
config dir: /opt/conda/etc/jupyter/nbconfig
notebook section
jupyter-matplotlib/extension enabled
- Validating: OK
jupyter-js-widgets/extension enabled
- Validating: OK
JupyterLab v2.1.5
Known labextensions:
app dir: /opt/conda/share/jupyter/lab
@bokeh/jupyter_bokeh v2.0.3 enabled OK
@jupyter-widgets/jupyterlab-manager v2.0.0 enabled OK
jupyter-matplotlib v0.7.3 enabled OK
```

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia eseguendo la riproduzione fornita nella stessa cella in JupyterLab o Notebook con il backend `%matplotlib widget`, quindi confrontala con la versione in celle separate. Il lavoro è completato quando `fig.canvas.draw()` aggiorna visibilmente la figura durante ogni iterazione del ciclo, invece che solo dopo l'uscita dal ciclo.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
jupyter-notebook, matplotlib, python
Ambito
data-visualization
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.