如何解决如何在 Python Dash 中触发 mouseout 事件?
如何实现对 mouSEOut
做出反应并在未悬停在数据点上时恢复默认值的回调函数?
我简化了从 Plotly|Dash 教程的“交互式可视化”部分截取的代码来说明我的问题。在此示例中,callback
函数返回 mouSEOver
信息。我如何在 mouSEOut
上返回默认值?
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input,Output
import plotly.express as px
import pandas as pd
app = dash.Dash(__name__)
df = pd.DataFrame({
"x": [1,2,1,2],"y": [1,3,4]
})
fig = px.scatter(df,x="x",y="y")
fig.update_traces(marker_size=20)
app.layout = html.Div([
dcc.Graph(
id='basic-interactions',figure=fig
),html.Div([
html.Pre(id='hover-data')
])
])
@app.callback(
Output('hover-data','children'),Input('basic-interactions','hoverData'))
def display_hover_data(hoverData):
if hoverData:
return str(hoverData)
else:
return "hover over data point"
if __name__ == '__main__':
app.run_server(debug=True)
解决方法
您可以在 dcc.Graph
上设置 clear_on_unhover
属性:
clear_on_unhover(布尔值;默认为 False):如果为 True,则 clear_on_unhover 将在用户从某个点“取消悬停”时清除 hoverData 属性。如果为 False,则 hoverData 属性将等于最后一个悬停点的数据。
所以改变这个:
dcc.Graph(id="basic-interactions",figure=fig)
为此:
dcc.Graph(id="basic-interactions",figure=fig,clear_on_unhover=True)
在 unhover 时 hoverData
将等于 None
,因此示例中的回调可以保持不变。 "hover over data point"
将在 unhover 时返回。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。