简体   繁体   English

等值线图未显示

[英]choropleth map not showing

I am a fresh starter with Python for Data science and this is my first help request here (then apologize in advance for some mistakes).我是 Python 数据科学的新手,这是我在这里的第一个帮助请求(然后为一些错误提前道歉)。 Need your support to get why this (simple data frame based) choropleth map is not showing.需要您的支持才能了解为什么未显示此(基于简单数据框的)区域分布图。 Read quite several discussion on the argument then I verified all the main stuff: district names and NAAM (in the geojson) both in str etc - but still I am stuck and I can't see the map (only the legend).阅读了很多关于这个论点的讨论,然后我验证了所有主要内容:地区名称和 NAAM(在 geojson 中)都在 str 等中 - 但我仍然卡住了,我看不到地图(只有图例)。 Lemme know if more info are needed, below u can find the code: In [9]:让我知道是否需要更多信息,您可以在下面找到代码:在 [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

Out[9]:出[9]:

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

In [10]:在 [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

这里地图输出

District names are not stored in block letters in your wijk_.geojson file.地区名称不会以大写字母形式存储在您的wijk_.geojson文件中。 Therefore, it should be enough to remove this line:因此,删除此行应该就足够了:

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

My code:我的代码:

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

returns this map:返回这张地图:

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM