Python Plotly-Dash 散点极坐标图中的点击事件

6
我想创建两个包含iframed plotly-dash图形的网页。我希望实现第一个图形的点击事件,以便重定向到另一页(该页面具有有关特定数据的更多信息)。
我按照this指南进行操作,但是即使我在运行它的Python venv中安装了ipywidgets、node.js和plotlywidgets扩展,我的设置中点击事件也未被触发。上面的示例中有一个注释:

注意:仅当跟踪属于plotly.graph_objs.FigureWidget的实例并且在ipywidget上下文中显示时,回调才会触发。在使用plot/iplot显示的图形上不会触发回调。

该示例正在使用FigureWidget,我通过将图形传递给dcc.Graph来绘制它,这应该与fig.show()相同。整个代码如下
import plotly.graph_objects as go
import numpy as np
np.random.seed(1)

x = np.random.rand(100)
y = np.random.rand(100)

fig = go.FigureWidget([go.Scatter(x=x, y=y, mode='markers')])

scatter = fig.data[0]
colors = ['#a3a7e4'] * 100
scatter.marker.color = colors
scatter.marker.size = [10] * 100
fig.layout.hovermode = 'closest'


# create our callback function
def update_point(trace, points, selector):
    c = list(scatter.marker.color)
    s = list(scatter.marker.size)
    for i in points.point_inds:
        c[i] = '#bae2be'
        s[i] = 20
        with fig.batch_update():
            scatter.marker.color = c
            scatter.marker.size = s


scatter.on_click(update_point)

import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()
app.layout = html.Div([
    dcc.Graph(figure=fig)
]) 

app.run_server(debug=True, use_reloader=False)


我不知道如何确保它在ipywidget上下文中显示。
我知道有一个解决方法,像this这样使用layout.clickmode = select和一个单独的按钮,但我想让图形的on_click()事件起作用。
请问是否有人能帮助我使其正常工作?
1个回答

2

关于文档的这一部分:

在ipywidget上下文中

这意味着它只能在例如jupyter笔记本中使用。

如果您希望在使用dash时具有此类图形交互性,则应使用dcc.Graph属性来触发您的回调(hoverDataclickDataselectedDatarelayoutData)。

在此处查看更多信息:交互式可视化


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接