Сумасшедший, как все, кажется, смущены взаимодействием с оффлайн графиками!
Тем не менее, довольно просто воспользоваться преимуществом присвоения свойств (например, см. Эту документацию , хотя в настоящее время она частично устарела).
Приведенный ниже наивный фрагмент кода обновляет plotly.graph_objs.FigureWidget()
при взаимодействии пользователя через виджет dropdown
. Фактически, pandas.DataFrame()
, содержащий данные осей и осей диаграммы, разрезаны по измерению Commodity
, которое пользователь хочет отобразить на линейном графике.
Самая утомительная часть, вероятно, - это установка всех дополнительных требований к библиотеке, если вы используете jupyterlab
import pandas as pd
import plotly.graph_objs as go
import ipywidgets as widgets
df = pd.DataFrame({'cmdty' : ['beans', 'beans', 'beans', 'corn', 'corn', 'corn'],
'month' : [1, 2, 3, 1, 2, 3],
'value' : [10.5, 3.5, 8.0, 5.0, 8.75, 5.75]})
items = df.cmdty.unique().tolist()
cmdty = widgets.Dropdown(options=items,
description='Commodity')
def response(change):
c = cmdty.value
df_tmp = df[df.cmdty == c]
x0 = df_tmp['month'] # Useless here as x is equal for the 2 commodities
x1 = df_tmp['value']
fig.data[0].x = x0 # Useless here as x is equal for the 2 commodities
fig.data[0].y = x1
fig = go.FigureWidget(data=[{'type' : 'scatter'}])
cmdty.observe(response, names='value')
display(widgets.VBox([cmdty, fig]))