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)
非常感谢