Reputation: 1
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). 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). Lemme know if more info are needed, below u can find the code: In [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]:
District Rent
0 BINNENSTAD 1792.281250
1 NOORDOOST 1763.558824
2 OOST 1739.186047
3 ZUID 1562.142857
4 ZUIDWEST 1397.689655
In [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
Upvotes: 0
Views: 2130
Reputation: 8903
District names are not stored in block letters in your wijk_.geojson
file. 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:
Upvotes: 1