Думаю, мне удалось решить половину проблемы.
Во-первых, если вы используете метод для создания фигуры, вам нужно сохранить ее в отдельный объект:
my_plot = generate_plot()
Во-вторых, вам нужно дать своей фигуре ID:
dcc.Graph(figure=my_plot, id="my_plot")
В-третьих, вам нужно добавить app.callback
, например:
@app.callback(
dash.dependencies.Output("my_plot", "figure"),
[dash.dependencies.Input("my_plot", "hoverData")]
)
def highlight_trace(hover_data):
# here you set the default settings
for trace in my_pot.data:
country["line"]["width"] = 1
country["opacity"] = 0.5
if hover_data:
trace_index = hover_data["points"][0]["curveNumber"]
my_plot.data[trace_index]["line"]["width"] = 5
my_plot.data[trace_index]["opacity"] = 1
return my_plot
Это выделит след на hover, но он будет сбрасывать свое состояние только при наведении курсора на другую трассу (что может быть предполагаемым поведением в некоторых случаях). Я до сих пор не выяснил, как сбросить внешний вид трассы, как только вы не наводите курсор мыши на нее, , поэтому, если у вас есть какие-либо предложения по этому поводу, пожалуйста, сообщите нам об этом, пока я не буду считать этот вопрос без ответа
РЕДАКТИРОВАТЬ
Хорошо, я понял, как сбросить эффекты при наведении: просто добавьте параметр clear_on_hover
, например: dcc.Graph(figure=my_plot, id="my_plot", clear_on_hover=True)
Большое спасибо