matplotlib / matplotlib/ipympl
Matplotlib Fails to Update Axis Limits with ipywidgets in Jupyter Lab
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
I'm using `ipywidgets` along with `matplotlib` in Jupyter Lab and stumbled across some strange behavior. Here's an example of the code:
```python
import matplotlib.pyplot as plt
import ipywidgets as widgets
%matplotlib widget
plt.ioff()
d = {
"a": [1,2,3],
"b": [2,3,4]
}
fig, ax = plt.subplots()
def update(change):
data = d[change["new"]]
ax.clear() # Clear the previous plot
ax.plot(data, data)
ax.set_xlim(min(data), max(data))
ax.set_ylim(min(data), max(data))
ax.figure.canvas.draw()
dropdown = widgets.Dropdown(options = list(d.keys()))
dropdown.observe(update, "value")
display(dropdown, fig.canvas)
update({"new": "a"})
```
The steps I carry out are as follows:
- Select `b` from dropdown
- Pan the plot
- Select `a` from dropdown
- Click on the "Reset original view" button on the plot
Instead of snapping the plot extents back to what they are set for choice `a`, I instead get the following:
[![enter image description here][1]][1]
Where it looks like `matplotlib` has indeed plotted the data `[1,2,3]`, but somehow failed to update the axis limits based on that data.
I really hope this isn't a bug, and that I'm doing something wrong. Has anyone seen this behavior before?
[1]: https://i.stack.imgur.com/nCOHG.png
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 reproducer di Jupyter Lab nell’issue con il menu a discesa di ipywidgets e il backend per widget di Matplotlib, quindi segui la sequenza indicata di selezione, panoramica e ripristino. Confronta i limiti degli assi ripristinati con i limiti impostati per ciascun dataset; il lavoro è completato quando, dopo il passaggio da b ad a, la vista ripristinata corrisponde ai dati attualmente selezionati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- jupyter, jupyter-notebook, python
- Ambito
- data-visualization
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 40/100