python - 如何在 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,2,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)
解决方案
您可以clear_on_unhover
在以下位置设置属性dcc.Graph
:
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)
on unhoverhoverData
将等于None
,因此示例中的回调可以保持不变。"hover over data point"
将在 unhover 时返回。
推荐阅读
- python-3.x - WxPython StaticBitmap 未清除
- javascript - 如何创建一个函数来返回一个分隔 21 个航点的数组
- cmake - 使用 CMake 在另一台计算机上延迟安装下载的软件包
- python - TTk 单选按钮
- python - 将交错的数据拆分为单独的通道的 np.arrays?
- ios - 如何将 UIAlertAction 的标题作为该 VC 的标题发送到另一个 UIViewController
- laravel - Laravel 社交名流回调方法不起作用
- java - 何时使用 Lambda 表达式的 Java 最佳实践
- ios - FCM 通知未收到 iOS
- javascript - 如何使用工具提示将关键字包装在 html 代码中