Plotly - Classe FigureWidget
Plotly 3.0.0 introduce una nuova classe widget di Jupyter: plotly.graph_objs.FigureWidget. Ha la stessa firma di chiamata della nostra figura esistente ed è realizzato appositamente perJupyter Notebook e JupyterLab environments.
Il go.FigureWiget() function restituisce un oggetto FigureWidget vuoto con x e y assi.
f = go.FigureWidget()
iplot(f)
Di seguito è riportato l'output del codice:
![](https://assets.edu.lat/plotly/images/figure_widget_graph.jpg)
La caratteristica più importante di FigureWidget è la figura Plotly risultante ed è aggiornabile dinamicamente man mano che si aggiungono dati e altri attributi di layout ad essa.
Ad esempio, aggiungi le seguenti tracce del grafico una per una e guarda la figura vuota originale aggiornata dinamicamente. Ciò significa che non dobbiamo chiamare ripetutamente la funzione iplot () poiché la trama viene aggiornata automaticamente. L'aspetto finale di FigureWidget è come mostrato di seguito:
f.add_scatter(y = [2, 1, 4, 3]);
f.add_bar(y = [1, 4, 3, 2]);
f.layout.title = 'Hello FigureWidget'
![](https://assets.edu.lat/plotly/images/figure_widget.jpg)
Questo widget è in grado di ascoltare ascoltatori di eventi per passare il mouse, fare clic e selezionare punti e ingrandire le regioni.
Nell'esempio seguente, il FigureWidget è programmato per rispondere all'evento di clic nell'area del tracciato. Il widget stesso contiene un semplice grafico a dispersione con indicatori. La posizione del clic del mouse è contrassegnata con colori e dimensioni diversi.
x = np.random.rand(100)
y = np.random.rand(100)
f = go.FigureWidget([go.Scatter(x=x, y=y, mode='markers')])
scatter = f.data[0]
colors = ['#a3a7e4'] * 100
scatter.marker.color = colors
scatter.marker.size = [10] * 100
f.layout.hovermode = 'closest'
def update_point(trace, points, selector):
c = list(scatter.marker.color)
s = list(scatter.marker.size)
for i in points.point_inds:
c[i] = 'red'
s[i] = 20
scatter.marker.color = c
scatter.marker.size = s
scatter.on_click(update_point)
f
Esegui il codice sopra nel notebook Jupyter. Viene visualizzato un grafico a dispersione. Fare clic su una posizione nell'area che verrà contrassegnata con il colore rosso.
![](https://assets.edu.lat/plotly/images/location.jpg)
Anche l'oggetto FigureWidget di Plotly può fare uso di Ipython’swidget propri. Qui, usiamo il controllo di interazione come definito inipwidgetsmodulo. Per prima cosa costruiamo un fileFigureWidget e aggiungi un file empty scatter plot.
from ipywidgets import interact
fig = go.FigureWidget()
scatt = fig.add_scatter()
fig
Definiamo ora un file update function che immette la frequenza e la fase e imposta x e y proprietà del scatter tracedefinito sopra. Il@interact decoratorfrom ipywidgets module viene utilizzato per creare un semplice set di widget per controllare i parametri di un grafico. La funzione di aggiornamento è decorata con@interact decorator dal ipywidgets package. I parametri del decoratore vengono utilizzati per specificare gli intervalli di parametri su cui si desidera eseguire lo sweep.
xs = np.linspace(0, 6, 100)
@interact(a = (1.0, 4.0, 0.01), b = (0, 10.0, 0.01), color = ['red', 'green', 'blue'])
def update(a = 3.6, b = 4.3, color = 'blue'):
with fig.batch_update():
scatt.x = xs
scatt.y = np.sin(a*xs-b)
scatt.line.color = color
Il FigureWidget vuoto è ora popolato in colore blu con sine curve a e brispettivamente come 3.6 e 4.3. Sotto la cella del taccuino corrente, otterrai un gruppo di cursori per la selezione dei valori dia e b. C'è anche un menu a discesa per selezionare il colore della traccia. Questi parametri sono definiti in@interact decorator.
![](https://assets.edu.lat/plotly/images/interact_decorator.jpg)