【问题标题】:choropleth map not showing等值线图未显示
【发布时间】:2020-04-29 07:11:06
【问题描述】:

我是 Python for Data Science 的新手,这是我在这里的第一个帮助请求(请为一些错误提前道歉)。 需要您的支持才能了解为什么此(基于简单数据框的)等值线图未显示。阅读了很多关于该论点的讨论,然后我验证了所有主要内容:str 等中的地区名称和 NAAM(在 geojson 中) - 但我仍然卡住了,我看不到地图(只有图例)。让我知道是否需要更多信息,您可以在下面找到代码: 在[9]中:

df_clo=dfrc.groupby(['District']).mean()
df_clo.reset_index(inplace=True)
df_clo=df_clo[['District','Rent']]
df_clo['District'] = df_clo['District'].str.upper()
df_clo

输出[9]:

District    Rent
0   BINNENSTAD  1792.281250
1   NOORDOOST   1763.558824
2   OOST    1739.186047
3   ZUID    1562.142857
4   ZUIDWEST    1397.689655

在[10]中:

latitude = 52.09083
longitude = 5.12222
print('The geograpical coordinate of Utrecht are {}, {}.'.format(latitude, longitude))# create map of Utrecht using latitude and longitude values
utrecht_geo = r'https://raw.githubusercontent.com/umbesallfi/Coursera_Capstone/master/wijk_.geojson'
# create a numpy array of length 6 and has linear spacing from the minium total immigration to the maximum total immigration
threshold_scale = np.linspace(df_clo['Rent'].min(),
                              df_clo['Rent'].max(),
                              6, dtype=int)
threshold_scale = threshold_scale.tolist() # change the numpy array to a list
threshold_scale[-1] = threshold_scale[-1] + 1 # make sure that the last value of the list is greater than the maximum immigration
# let Folium determine the scale.
map_utr = folium.Map(location=[latitude, longitude], zoom_start=2, tiles='Mapbox Bright')
map_utr.choropleth(
    geo_data=utrecht_geo,
    data=df_clo,
    columns=['District', 'Rent'],
    key_on='feature.properties.NAAM',
    threshold_scale=threshold_scale,
    fill_color='YlOrRd', 
    fill_opacity=0.7, 
    line_opacity=0.2,
    legend_name='Price in Utrecht by Wijk',
    reset=True
)
map_utr

【问题讨论】:

    标签: python python-3.x geojson folium choropleth


    【解决方案1】:

    wijk_.geojson 文件中的区名不以正楷存储。因此,删除这一行就足够了:

    df_clo['District'] = df_clo['District'].str.upper()
    

    我的代码:

    import folium
    import pandas as pd
    import numpy as np
    
    m = folium.Map(location=[52.09083, 5.12222],
                   zoom_start=12,
                   control_scale=True)
    
    df_clo = pd.DataFrame({'District':['Binnenstad','Noordoost','Oost','Zuid','Zuidwest'],
                           'Rent':[1792.281250,
                                   1763.558824,
                                   1739.186047,
                                   1562.142857,
                                   1397.689655]})
    
    threshold_scale = np.linspace(df_clo['Rent'].min(),
                                  df_clo['Rent'].max(),
                                  6, dtype=int)
    threshold_scale = threshold_scale.tolist() # change the numpy array to a list
    threshold_scale[-1] = threshold_scale[-1] + 1 # make sure that the last value of the list is greater than the maximum immigration
    
    utrecht_geo = 'wijk_.geojson'
    
    folium.Choropleth(geo_data=utrecht_geo,
                      name='choropleth',
                      data=df_clo,
                      columns=['District', 'Rent'],
                      key_on='feature.properties.NAAM',
                      threshold_scale=threshold_scale,
                      fill_color='YlOrRd',
                      fill_opacity=0.7,
                      line_opacity=0.2,
                      legend_name='Price in Utrecht by Wijk',).add_to(m)
    
    folium.LayerControl().add_to(m)
    
    m
    

    返回此地图:

    【讨论】:

    • @umbesallfi 如果我的回答解决了您的问题,请采纳。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2022-11-30
    • 2017-09-10
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 2022-10-14
    相关资源
    最近更新 更多