[英]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.