【问题标题】:Dash datatable interactive with Mapbox与 Mapbox 交互的 Dash 数据表
【发布时间】:2021-02-24 13:22:02
【问题描述】:

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

这是我的桌子:

这是我对 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})

【问题讨论】:

    标签: python mapbox plotly-dash plotly-python


    【解决方案1】:

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

    如果您有静态数据源(df),他们会举例说明如何获取值,但如果您没有静态数据源,那么您需要在回调之间使用一种数据共享解决方案,例如 @987654325 @。 https://dash.plotly.com/datatable/interactivity

    无论如何,在这一点上问题只是增加了复杂性,所以我会建议一个不同的更简单的模型:

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

    #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
    

    【讨论】:

    • 谢谢!我会阅读您提供的链接:)
    • 嗨,你介意解释一下data=get_data(val) 吗?有点编程新手..谢谢你的帮助!
    • 我不知道如何获取数据,我把它写成你需要做的占位符,获取你的数据,绘制你的图,返回图
    • 请为努力投上一票,然后标记为已解决:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多