Skip to main content
 首页 » 编程设计

python之Plotly:澳大利亚 Choropleth map

2024年08月16日39kenshinobiy

我有一份澳大利亚各州和领地的列表及其相应的值。现在我想制作这样的热图:

我正在关注此 link 中的 Pyplot 示例但它只是美国各州的一个例子。

特别是,在这段代码中:

data = [ dict( 
    type='choropleth', 
    colorscale = scl, 
    autocolorscale = False, 
    locations = df['code'], 
    z = df['total exports'].astype(float), 
    locationmode = 'USA-states', 
    text = df['text'], 
    marker = dict( 
        line = dict ( 
            color = 'rgb(255,255,255)', 
            width = 2 
        ) ), 
    colorbar = dict( 
        title = "Millions USD") 
    ) ] 
 
layout = dict( 
    title = '2011 US Agriculture Exports by State<br>(Hover for breakdown)', 
    geo = dict( 
        scope='usa', 
        projection=dict( type='albers usa' ), 
        showlakes = True, 
        lakecolor = 'rgb(255, 255, 255)'), 
         ) 

如何修改代码以满足我的要求?对于澳大利亚 map ,locations、locationmode、scope、projection 参数的正确值应该是多少?例如,如果我知道澳大利亚各州、领地和城市的名称,我该如何找出它们的代码?

任何指针将不胜感激。还将考虑其他图书馆建议。

请您参考如下方法:

几个月前我尝试做类似的事情,但不幸的是,Plotly 目前不提供澳大利亚(或美国以外的任何国家)的任何半分辨率 map 。

如果您引用 Plotly API , 唯一可用的 locationmode 选项是 ["ISO-3"| “美国各州” | “国家名称”]

要绘制美国以外的任何国家/地区,唯一的选择是使用 locationmode = "country names",如 Western Africa example 中的情况。 ,并设置一个:

geo = dict( 
    scope = 'australia' 
) 

然而,你会发现海岸线都是参差不齐的,看起来很糟糕,没有州界等选项。

经过相当乏味的搜索后,我找到的最佳选择是使用 matplotlib 和 Basemap。例如。 this tutorial .

Basemap 似乎提供了一个 huge range of mapping options ,所以希望你能在那里找到一些爱。

或者,如果您的值是全州范围的,我只使用很酷的小 web-based tool由 Socialcops 提供。