【问题标题】:How to get rid of the white background of Choropleth?如何摆脱 Choropleth 的白色背景?
【发布时间】:2020-02-04 11:53:52
【问题描述】:

我正在使用 Potly Dashboard 构建仪表板。我使用的是深色引导主题,因此我不想要白色背景。

但是,我的地图现在看起来像这样:

生成它的代码如下所示:

trace_map = html.Div(
    [
        dcc.Graph(
            id = "map",
            figure = go.Figure(
                data=go.Choropleth(
                locations=code, # Spatial coordinates
                z = df.groupby(['month']).sum()['Sales'].astype(int), 
                locationmode = 'USA-states',
                colorscale = 'Reds',
                colorbar_title = "USD",
            ), layout = go.Layout(title = 'The Cities Sold the Most Product',
                                  font = {"size": 9, "color":"White"},
                                  titlefont = {"size": 15, "color":"White"},
                                  geo_scope='usa',
                                  margin={"r":0,"t":40,"l":0,"b":0},
                                  paper_bgcolor='#4E5D6C',
                                  plot_bgcolor='#4E5D6C',
                                  )
            )
        )
    ]
)

我尝试过paper_bgcolorplot_bgcolor,但无法成功。

理想情况下,我想实现此图像的外观(请忽略红点):

【问题讨论】:

    标签: python dictionary plotly


    【解决方案1】:

    一般:

    fig.update_layout(geo=dict(bgcolor= 'rgba(0,0,0,0)'))
    

    在你的具体例子中:

    go.Layout(geo=dict(bgcolor= 'rgba(0,0,0,0)')
    

    剧情:

    代码:

    import plotly.graph_objects as go
    
    fig  = go.Figure(
                    data=go.Choropleth(
                    #locations=code, # Spatial coordinates
                    #z = df.groupby(['month']).sum()['Sales'].astype(int), 
                    locationmode = 'USA-states',
                    colorscale = 'Reds',
                    colorbar_title = "USD",
                ), layout = go.Layout(geo=dict(bgcolor= 'rgba(0,0,0,0)'),
                                      title = 'The Cities Sold the Most Product',
                                      font = {"size": 9, "color":"White"},
                                      titlefont = {"size": 15, "color":"White"},
                                      geo_scope='usa',
                                      margin={"r":0,"t":40,"l":0,"b":0},
                                      paper_bgcolor='#4E5D6C',
                                      plot_bgcolor='#4E5D6C',
                                      )
                )
    
    fig.show()
    

    您可能还想更改湖泊的颜色。但请注意,设置lakecolor = 'rgba(0,0,0,0)' 将使湖泊与各州的颜色相同,而不是背景。所以我会选择lakecolor='#4E5D6C'。您当然可以对 bgcolor 做同样的事情,但是将其设置为 'rgba(0,0,0,0)'摆脱您特别要求的白色。

    湖色图:

    湖色代码:

    import plotly.graph_objects as go
    
    fig  = go.Figure(
                    data=go.Choropleth(
                    #locations=code, # Spatial coordinates
                    #z = df.groupby(['month']).sum()['Sales'].astype(int), 
                    locationmode = 'USA-states',
                    colorscale = 'Reds',
                    colorbar_title = "USD",
                ), layout = go.Layout(geo=dict(bgcolor= 'rgba(0,0,0,0)', lakecolor='#4E5D6C'),
                                      title = 'The Cities Sold the Most Product',
                                      font = {"size": 9, "color":"White"},
                                      titlefont = {"size": 15, "color":"White"},
                                      geo_scope='usa',
                                      margin={"r":0,"t":40,"l":0,"b":0},
                                      paper_bgcolor='#4E5D6C',
                                      plot_bgcolor='#4E5D6C',
                                      )
                )
    
    fig.show()
    

    我们也可以更改状态边框颜色,或者在这种情况下更神秘地称为subunitcolor。为了更好地匹配您想要的最终结果,我们还可以为地色增添趣味:

    状态边界和状态颜色,绘图:

    状态边框和状态颜色,代码:

    import plotly.graph_objects as go
    
    fig  = go.Figure(
                    data=go.Choropleth(
                    #locations=code, # Spatial coordinates
                    #z = df.groupby(['month']).sum()['Sales'].astype(int), 
                    locationmode = 'USA-states',
                    colorscale = 'Reds',
                    colorbar_title = "USD",
                ), layout = go.Layout(geo=dict(bgcolor= 'rgba(0,0,0,0)', lakecolor='#4E5D6C',
                                              landcolor='rgba(51,17,0,0.2)',
                                              subunitcolor='grey'),
                                      title = 'The Cities Sold the Most Product',
                                      font = {"size": 9, "color":"White"},
                                      titlefont = {"size": 15, "color":"White"},
                                      geo_scope='usa',
                                      margin={"r":0,"t":40,"l":0,"b":0},
                                      paper_bgcolor='#4E5D6C',
                                      plot_bgcolor='#4E5D6C',
                                      )
                )
    
    fig.show()
    

    【讨论】:

    • 太棒了!谢谢,但我不知道我应该把这个sn-p放在哪里。你能告诉我吗?因为我尝试将geo放入go.Layout,但它显示错误。
    • @yts61 我自己没怎么用过dcc.Graph。但是,如果您将 geo=dict(bgcolor= 'rgba(0,0,0,0)') 放入您的 go.Layout 定义中,它应该可以正常工作。
    【解决方案2】:

    我在这里找到了自己的方式,因为我想改变我的 Choroplethmapbox 的主题。接受的解决方案有所帮助,但最终我发现下面的代码适用于我的情况:

    实例化图

    fig = go.Figure()
    

    添加一些痕迹

    fig.add_trace(go.Choroplethmapbox(geojson=data_for_choropleth_geojson, 
                                      locations=data_for_choropleth['fips'],
                                      z=data_for_choropleth['total_population'],
                                      featureidkey='properties.fips'
                                  ))
    

    最后,使用 update_layout 更改主题

    fig.update_layout(
        hovermode='closest',
        mapbox=dict(
                    # style options: "basic", "streets", "outdoors", 
                    # "dark", "satellite", or "satellite-streets","light"
                    # "open-street-map", "carto-positron", 
                    # "carto-darkmatter", "stamen-terrain", 
                    # "stamen-toner" or "stamen-watercolor"
                    style='light',
                    bearing=0,
                    pitch=0,
                    accesstoken=TOKEN,
                    zoom=5,
                    center=dict(
                        lat=29.4652568,
                        lon=-98.613121
            )
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-18
      • 1970-01-01
      • 1970-01-01
      • 2018-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多