Plotly - Clase FigureWidget
Plotly 3.0.0 introduce una nueva clase de widget de Jupyter: plotly.graph_objs.FigureWidget. Tiene la misma firma de llamada que nuestra figura existente y está hecha específicamente paraJupyter Notebook y JupyterLab environments.
los go.FigureWiget() function devuelve un objeto FigureWidget vacío con x por defecto y y ejes.
f = go.FigureWidget()
iplot(f)
A continuación se muestra la salida del código:
La característica más importante de FigureWidget es la figura Plotly resultante y se puede actualizar dinámicamente a medida que agregamos datos y otros atributos de diseño.
Por ejemplo, agregue los siguientes trazos de gráficos uno por uno y vea la figura vacía original actualizada dinámicamente. Eso significa que no tenemos que llamar a la función iplot () una y otra vez ya que el gráfico se actualiza automáticamente. La apariencia final del FigureWidget es como se muestra a continuación:
f.add_scatter(y = [2, 1, 4, 3]);
f.add_bar(y = [1, 4, 3, 2]);
f.layout.title = 'Hello FigureWidget'
Este widget es capaz de detectar eventos para desplazarse, hacer clic y seleccionar puntos y hacer zoom en regiones.
En el siguiente ejemplo, el FigureWidget está programado para responder al evento de clic en el área de trazado. El widget en sí contiene un diagrama de dispersión simple con marcadores. La ubicación del clic del mouse está marcada con diferentes colores y tamaños.
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
Ejecute el código anterior en el cuaderno Jupyter. Se muestra un diagrama de dispersión. Haga clic en una ubicación en el área que se marcará con color rojo.
El objeto FigureWidget de Plotly también puede hacer uso de Ipython’spropios widgets. Aquí, usamos el control de interacción como se define enipwidgetsmódulo. Primero construimos unFigureWidget y agrega un empty scatter plot.
from ipywidgets import interact
fig = go.FigureWidget()
scatt = fig.add_scatter()
fig
Ahora definimos un update function que introduce la frecuencia y la fase y establece la xy y propiedades del scatter tracedefinido anteriormente. los@interact decoratordel módulo ipywidgets se utiliza para crear un conjunto simple de widgets para controlar los parámetros de un gráfico. La función de actualización está decorada con@interact decorator desde el ipywidgets package. Los parámetros del decorador se utilizan para especificar los rangos de parámetros que queremos barrer.
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
El widget de figura vacío ahora se rellena en color azul con sine curve a y bcomo 3.6 y 4.3 respectivamente. Debajo de la celda del cuaderno actual, obtendrá un grupo de controles deslizantes para seleccionar valores dea y b. También hay un menú desplegable para seleccionar el color de la traza. Estos parámetros se definen en@interact decorator.