Python 中的等值线地图,使用plotly,无需状态代码。

问题描述 投票:0回答:2

我有以下代码来在 python 中绘制分区统计图。

data = [dict(
    type="choropleth",
    autocolorscale= True,
    locations = df[statename],
    z = df[z].astype(float),
    locationmode = 'USA-states',
    text = df[state],
    marker = dict(
    line = dict (
    color = 'rgb(255,255,255)',
    width = 2
 )),
    colorbar = dict(title = title)
)]

layout = dict(title = title,
        geo=dict(scope="usa",showlakes = True,lakecolor = 'rgb(255, 255, 255)'))

iplot(go.Figure(data=data,layout=layout),validate=False)

是否可以仅使用州名称作为

locations
的输入来绘制地图,或者是否需要两个字母州代码。当我使用州代码时它可以工作,但是当我使用州名称时它只会给我一张空地图。

python plotly choropleth
2个回答
0
投票

可能有一种方法可以更改传递给参数

locationmode
的值,以采用状态名称而不是状态代码。作为替代方案,如果有一个数据框 statesdf 的列
statesdf['state']
包含州名称,您可以使用以下代码从州名称创建州代码:

state_codes = {
    'District of Columbia' : 'dc','Mississippi': 'MS', 'Oklahoma': 'OK', 
    'Delaware': 'DE', 'Minnesota': 'MN', 'Illinois': 'IL', 'Arkansas': 'AR', 
    'New Mexico': 'NM', 'Indiana': 'IN', 'Maryland': 'MD', 'Louisiana': 'LA', 
    'Idaho': 'ID', 'Wyoming': 'WY', 'Tennessee': 'TN', 'Arizona': 'AZ', 
    'Iowa': 'IA', 'Michigan': 'MI', 'Kansas': 'KS', 'Utah': 'UT', 
    'Virginia': 'VA', 'Oregon': 'OR', 'Connecticut': 'CT', 'Montana': 'MT', 
    'California': 'CA', 'Massachusetts': 'MA', 'West Virginia': 'WV', 
    'South Carolina': 'SC', 'New Hampshire': 'NH', 'Wisconsin': 'WI',
    'Vermont': 'VT', 'Georgia': 'GA', 'North Dakota': 'ND', 
    'Pennsylvania': 'PA', 'Florida': 'FL', 'Alaska': 'AK', 'Kentucky': 'KY', 
    'Hawaii': 'HI', 'Nebraska': 'NE', 'Missouri': 'MO', 'Ohio': 'OH', 
    'Alabama': 'AL', 'Rhode Island': 'RI', 'South Dakota': 'SD', 
    'Colorado': 'CO', 'New Jersey': 'NJ', 'Washington': 'WA', 
    'North Carolina': 'NC', 'New York': 'NY', 'Texas': 'TX', 
    'Nevada': 'NV', 'Maine': 'ME'}

statesdf['state_code'] = statesdf['state'].apply(lambda x : state_codes[x])

0
投票

使用 us 库,它提供了一种将州名称映射到各自州代码的简单方法。

示例:

def map_state_to_code(state_name):
    state = us.states.lookup(state_name)
    return state.abbr if state else None

statesdf['state_code'] = statesdf['state'].apply(map_state_to_code)
© www.soinside.com 2019 - 2024. All rights reserved.