Python Plotly Choropleth贴图成功加载到Jupyter,但未加载到Dash browser

Python Plotly Choropleth贴图成功加载到Jupyter,但未加载到Dash browser,python,plotly,geojson,plotly-dash,geopandas,Python,Plotly,Geojson,Plotly Dash,Geopandas,我已经能够使用plotly和geopandas成功地创建自定义shapefile Choropleth地图。它在我的Jupyter窗口中成功加载。下图是在Jupyter中运行时地图的外观 这是用于渲染上述贴图的代码: data = go.Choroplethmapbox( geojson = gdf_json, locations = df.index.astype(str), z = df['2016']['Total'], t

我已经能够使用plotly和geopandas成功地创建自定义shapefile Choropleth地图。它在我的Jupyter窗口中成功加载。下图是在Jupyter中运行时地图的外观

这是用于渲染上述贴图的代码:

data = go.Choroplethmapbox(
        geojson = gdf_json,
        locations = df.index.astype(str),
        z = df['2016']['Total'],
        text = df.index.astype(str),
        colorbar=dict(thickness=20,ticklen=3,tickformat=',.2r',outlinewidth=0),
        marker_line_width=0.5,
        marker_opacity=0.4,
        colorscale='gnbu',
        zmin=zmin,
        zmax=zmax,
        hovertemplate = "<b>%{text}</b><br>" +
                    "%{z:,.4r}<br>" +
                    "<extra></extra>")

#mapbox geographic map layout
layout = go.Layout(
    title='Expenditure, 2020',
    autosize=True,
    #hovermode='closest',
    #showlegend=True,
    height=600,
    margin=dict(l=0, r=0, t=40, b=0),
    
    mapbox = dict(
        domain = {'x': [0, 1],'y': [0, 1]}, 
        center = dict(lat=-27.628296146695863, lon=152.74025612708698),
        accesstoken = MAPBOX_ACCESSTOKEN, 
        #pitch=0,
        zoom=10,
        style='light')
    )

fig = go.Figure(data=data, layout=layout)
fig.show()

我尝试过的

为了缩小潜在问题的范围,我尝试加载其他元素,如下拉列表、单选按钮和范围滑块。这些已成功加载,只是地图本身没有加载。我还使用了正确的公共Mapbox API标记,因为我之前加载了一个Scattermapbox图(创建了一个气泡图),它在Dash上已经成功

可能的原因

显然,起点是我的代码中是否有一个非常小的语法错误

然而,我还想知道geojson的加载是否有问题?即使它在Jupyter中成功加载,在将其加载到Dash中时可能会使用稍微不同的方法

要将我的geopandas多边形转换为geojson,请执行以下操作:

  • 我把它转换成一个合适的CRS-->
    gdf.to_CRS(epsg=4326)
  • 将索引设置为我的唯一id-->
    gdf。设置索引(id)
  • 已应用此函数-->gdf\U json=
    gdf.\uuu地理位置\uu接口\uuu

  • 如果可能的话,我希望能得到一些帮助。谢谢大家!

    我正在处理一个非常类似的问题,当我从jupyter转换为dash时,我不记得必须更改geojson的过程。但不要拒绝这种可能性。它没有从geojson中产生任何错误这一事实很可能表明在构建布局时出现了错误。所以前两件事你应该先试试

  • 运行调试器(如果您还没有),因为这将拾取不会移植到终端的错误
  • app.run\u服务器(debug=True)

  • 将地图渲染代码放入函数中

    def build_map():

    app.layout=html.Div[(dcc.Graph(figure=build\u map())]

  • 我在构建更大的地图时遇到了一个错误,因为地图会超时

    这里有太多可能出错的事情,所以消除的过程是关键。请在下面随意评论,我将继续尝试并帮助您

    app.layout = html.Div([
        dcc.Graph(id = 'plot', figure = fig)
    
    ])
    
    if __name__ == '__main__':
        app.run_server()
    
     return fig #after building the map figure