Plotly:隐藏 hoverlabel,同时在回调中保留 hoverData

Plotly: Hide the hoverlabel while retaining hoverData in callback

有没有办法在 Dash 回调中保留 hoverData 的同时隐藏 plotly 图中的 hoverlabel?

我到处都找过,最密切相关的 here,但似乎没有任何效果。 hoverinfo 参数在 update_layout 中不是有效参数,hovertemplate 也不是。这是我最接近的隐藏 hoverlabel 的尝试,但不幸的是不允许 hoverData 回调。

import plotly.express as px
from PIL import Image
import numpy as np

ss_rgb = np.array(Image.open('test.png'))

fig = px.imshow(ss_rgb)

fig.update_xaxes(visible=False)
fig.update_yaxes(visible=False)
fig.update_layout(
     dragmode=False,
    hovermode=False,
    #hoverinfo='none', # invalid parameter
    #hovertemplate=False # invalid parameter
)

plotly forum post you linked 有答案。您所尝试的问题是 hoverinfohovertemplate 不是使用 fig.update_layout 设置的有效属性。然而,它们可以设置为 fig.update_traces:

fig.update_traces(hoverinfo='none', hovertemplate=None)

完整的可重现示例:

import json
import plotly.express as px
from dash import Dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Output, Input


df = px.data.gapminder().query("country=='Canada'")
fig = px.line(df, x="year", y="lifeExp", title="Life expectancy in Canada")

fig.update_xaxes(visible=False)
fig.update_yaxes(visible=False)
fig.update_traces(hoverinfo="none", hovertemplate=None)

app = Dash(__name__)
app.layout = html.Div([dcc.Graph(id="graph", figure=fig), html.Div(id="output")])


@app.callback(Output("output", "children"), Input("graph", "hoverData"))
def display_hover_data(hoverData):
    return json.dumps(hoverData, indent=2)


if __name__ == "__main__":
    app.run_server()