Plotly - classe FigureWidget

Plotly 3.0.0 apresenta uma nova classe de widget Jupyter: plotly.graph_objs.FigureWidget. Ele tem a mesma assinatura de chamada que nossa Figura existente, e é feito especificamente paraJupyter Notebook e JupyterLab environments.

o go.FigureWiget() function retorna um objeto FigureWidget vazio com padrão x e y eixos.

f = go.FigureWidget()
iplot(f)

A seguir está a saída do código -

O recurso mais importante de FigureWidget é a figura Plotly resultante e é dinamicamente atualizável à medida que adicionamos dados e outros atributos de layout a ele.

Por exemplo, adicione os seguintes traços de gráfico um por um e veja a figura vazia original atualizada dinamicamente. Isso significa que não precisamos chamar a função iplot () repetidas vezes, pois o gráfico é atualizado automaticamente. A aparência final do FigureWidget é mostrada abaixo -

f.add_scatter(y = [2, 1, 4, 3]);
f.add_bar(y = [1, 4, 3, 2]);
f.layout.title = 'Hello FigureWidget'

Este widget é capaz de ouvir eventos para passar o mouse, clicar e selecionar pontos e aplicar zoom em regiões.

No exemplo a seguir, o FigureWidget é programado para responder ao evento de clique na área do gráfico. O próprio widget contém um gráfico de dispersão simples com marcadores. O local do clique do mouse é marcado com cores e tamanhos diferentes.

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

Execute o código acima no bloco de notas Jupyter. Um gráfico de dispersão é exibido. Clique em um local da área que será marcado com a cor vermelha.

O objeto FigureWidget de Plotly também pode fazer uso de Ipython’spróprios widgets. Aqui, usamos o controle de interação conforme definido emipwidgetsmódulo. Primeiro construímos umFigureWidget e adicione um empty scatter plot.

from ipywidgets import interact
fig = go.FigureWidget()
scatt = fig.add_scatter()
fig

Agora definimos um update function que insere a frequência e fase e define o x e y propriedades do scatter tracedefinido acima. o@interact decoratordo módulo ipywidgets é usado para criar um conjunto simples de widgets para controlar os parâmetros de um gráfico. A função de atualização é decorada com@interact decorator de ipywidgets package. Os parâmetros do decorador são usados ​​para especificar os intervalos de parâmetros que queremos varrer.

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

FigureWidget vazio agora é preenchido na cor azul com sine curve um e bcomo 3,6 e 4,3, respectivamente. Abaixo da célula do notebook atual, você obterá um grupo de controles deslizantes para selecionar os valores dea e b. Também existe uma lista suspensa para selecionar a cor do traço. Esses parâmetros são definidos em@interact decorator.