我想创建两个包含iframed plotly-dash图形的网页。我希望实现第一个图形的点击事件,以便重定向到另一页(该页面具有有关特定数据的更多信息)。
我按照this指南进行操作,但是即使我在运行它的Python venv中安装了ipywidgets、node.js和plotlywidgets扩展,我的设置中点击事件也未被触发。上面的示例中有一个注释:
我不知道如何确保它在ipywidget上下文中显示。
我知道有一个解决方法,像this这样使用
请问是否有人能帮助我使其正常工作?
我按照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()
事件起作用。请问是否有人能帮助我使其正常工作?