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:

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'

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.

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.