与 Mapbox 交互的 Dash 数据表

Dash datatable interactive with Mapbox

我正在尝试让我的破折号数据table与我的 Mapbox 交互。因此,当我单击如下图所示突出显示的“A”时,它应该会显示 mapbox 上该点的 latitude/longitude。如果我错了请纠正我,但我需要使用回调函数 - clickData。但是我尝试了几次使用 clickData 但它没有用。想知道是否有任何我可以参考的代码或任何网站讨论 dash datatable 与 clickData 交互。谢谢!

这是我的 table:

这是我的 mapbox 代码:

fig = px.scatter_mapbox(df4_1.to_dict('records'), lat="Latitude", lon="Longitude", hover_name="Name", hover_data=["Id"],color_discrete_sequence=["purple"], zoom=9, height=450)
fig.update_layout(mapbox_style="open-street-map")
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})

clickData 不是破折号数据表的 属性,您拥有的是 active_cell 属性。有关于如何使用活动单元格更新绘图的示例。需要注意的是,您获取的不是所选单元格内的值,而是行和列 ID。如果您启用排序或编辑,此 active_cell 不可靠。

他们给出了一个示例,说明如果您有静态数据源 (df) 如何获取值,但是如果您没有静态数据源,则需要在回调之间使用一种数据共享解决方案,例如dcc.Storehttps://dash.plotly.com/datatable/interactivity

无论如何,此时问题的复杂性增加了,所以我建议使用一个不同的更简单的模型:

在那种情况下,我会说将 mapbox 和数据表完全分开,只有一个生成绘图的文本输入和一个简单的回调:

#put this before your mapbox
dcc.Input(
    id="text_input_id",
    type="text,
    placeholder="input name of mapbox")


@app.callback(
Output("out-all-types", "children"),
Input("text_input_id", "value"),
)
def render_mapbox(val):
    data=get_data(val) #do your stuff, get the data, make the plot 
    fig= ....
    return fig