Ci sono molte possibilità incredibili per creare immagini animate usando mpld3
. Tuttavia, sembra che tutte le "parti mobili" siano responsabilità di JavaScript. Inoltre, ci sono molte richieste su Internet e Stack Overflow in cui le persone chiedono direttamente questa possibilità.È effettivamente possibile passare dati (callback) da mpld3 a ipython?
Retrieve Data From Dynamic mpld3 plot in python
Get point information after dragging
How to "dump" points selected with the LinkedBrush plugin for mpld3?
mpld3 ~ Select points and get their coordinates?
con i riferimenti ivi, ma tutte le risposte sono sbagliate, in quanto si propongono di utilizzare una sorta di avvisi o didascalie. Il secondo collegamento è, tuttavia, il più interessante, dal momento che suggerisce di aggiungere un modulo HTML e di premere il pulsante per inviare i dati a "server-python" dal "client-javascript". V'è un altro notebook interessante
http://nbviewer.jupyter.org/gist/aflaxman/11156203
che è menzionato da molte persone come una fonte di ispirazione - salva la configurazione di uscita del file .html. Forse questo scambio di hard-disk può essere usato per procedere ulteriormente con Python.
Spostandomi, ho scoperto IPYwidgets
, con un sacco di esempi e persino possibilità di VERO client-server di interazione. In sostanza, potremmo partire da cursori e pulsanti di base, ma poi vediamo che alcuni pacchetti più complessi sono costruiti su questa base: principalmente bqplot
e alcuni altri pacchetti ereditati.
Quello che voglio - è solo trascinare e rilasciare alcuni punti sull'immagine, e poi passarli a iPython per fare ulteriori trame - è molto complicato e sicuramente non può essere spostato su JavaScript. Ma sembra che nonostante il team di bqplot
abbia svolto un lavoro enorme, è possibile utilizzare solo alcune serie di interazioni "predefinite", quindi il comportamento di trascinamento della selezione non è ancora incluso.
Quando ho provato (non molto profondamente) per inserire il codice sorgente di mpld3 e modificarlo ed eventualmente unirmi con ipywidgets, ho riscontrato che molte cose sono deprecate, il codice si evolve molto velocemente, cosa che non si accorda con l'esistente esempi in internet: la maggior parte dei pioppi sono molto vecchi, e le richieste sono anche molto vecchie. Quindi non ho potuto fare nulla a causa del caos, molti esempi falliscono a causa della mancanza di compatibilità con le versioni precedenti.
Riepilogo. Sarei felice se qualcuno fornisse un modo per trascinare i punti e per passare le loro coordinate a Python, ma quale potrebbe essere più utile - è la possibilità di passare informazioni da mpld3 in un modo più "astratto", in modo che altri casi possono essere inclusi.
UPD: A proposito, un po 'di tempo dopo aver postato la domanda originale, ho trovato una soluzione piuttosto valida sullo stack overflow: [Grafici interattivi in jupyter notebook con punti trascinabili] (http://stackoverflow.com/questions/30207912/interactive-plots-in-jupyter-ipython-notebook-with-draggable-points-that-call? rq = 1), ha funzionato per me, ma con alcuni bug di visualizzazione, che non ho potuto correggere. La risposta non è accettata lì per qualche motivo. Ad ogni modo, l'intera procedura è piuttosto complicata. –