微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Python Dash 中触发 mouseout 事件?

如何解决如何在 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 举报,一经查实,本站将立刻删除。