Javascript Dash:实现跟踪高亮回调

Javascript Dash:实现跟踪高亮回调,javascript,python,plotly,data-visualization,plotly-dash,Javascript,Python,Plotly,Data Visualization,Plotly Dash,我有一个带有以下app.py文件的基本dash应用程序: import dash import dash_core_components as dcc import dash_html_components as html import plotly.graph_objects as go def generate_plot(): fig = go.Figure() fig.add_trace(go.Scatter(x=[1, 2, 3], y=[1, 2, 3], name=

我有一个带有以下
app.py
文件的基本dash应用程序:

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objects as go

def generate_plot():
    fig = go.Figure()
    fig.add_trace(go.Scatter(x=[1, 2, 3], y=[1, 2, 3], name="A", line={"width": 1}))
    fig.add_trace(go.Scatter(x=[1, 2, 3], y=[1, 3, 5], name="B", line={"width": 1}))
    return fig

app = dash.Dash(__name__)
app.layout = html.Div(children=[
    html.H1(children="title", className="title"),
    dcc.Graph(figure=generate_plot(), className="plot")
])
我想在悬停时突出显示(将线宽增加到5)一个轨迹。到目前为止,我已经找到了一种在Jupyter笔记本中实现这一点的方法,即使用
go.FigureWidget
对象而不是
go.Figure
(有关更多信息,请参阅),但是,它在Dash中不起作用。如果有人对如何达到预期效果有任何想法,请告诉我们


非常感谢

我想我解决了一半的问题

首先,如果要使用方法生成体形,则需要将其保存到单独的对象中:

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
这将突出显示悬停时的跟踪,但仅当您悬停在另一个跟踪上时才会重置其状态(在某些情况下,这可能是预期的行为)。我仍然没有弄清楚如何在你不在它上面徘徊的时候重置痕迹外观,<强>所以如果你对此有任何建议,请告诉我们,直到那时我会考虑这个问题未回答< /强>

编辑

好的,我找到了重置悬停效果的方法:只需添加如下参数:
dcc.Graph(figure=my\u plot,id=“my\u plot”,clear\u on\u hover=True)

非常感谢