以下代碼會生成一個帶有由population填充的國家/地區的Web地圖,其值來自world.json。正常'def'函數而不是lambda
import folium
map=folium.Map(location=[30,30],tiles='Stamen Terrain')
map.add_child(folium.GeoJson(data=open('world.json', encoding='utf-8-sig'),
name="Unemployment",
style_function=lambda x: {'fillColor':'green' if x['properties']['POP2005'] <= 10000000 else 'orange' if 10000000 < x['properties']['POP2005'] < 20000000 else 'red'}))
map.save('file.html')
鏈接world.json。
我想知道是否可以使用由def
創建的普通函數而不是lambda函數作爲參數style_function
的值。我嘗試了,創造一個功能:
def feature(x):
file = open("world.json", encoding='utf-8-sig')
data = json.load(file)
population = data['features'][x]['properties']['POP2005']
d ={'fillColor':'green' if x['properties']['POP2005'] <= 10000000 else 'orange' if 10000000 < x['properties']['POP2005'] < 20000000 else 'red'}
return d
但是,我想不出如何style_function
使用它。這是可能的還是lambda函數在這裏是不可替代的?
你的意思是'style_function = feature'? – khelwood
或者只是'def style_function'而不是'def feature'? 'style_function'甚至可以在哪裏使用? –
另外 - 你真的想每次調用該函數時打開和加載json文件嗎?當然 - 你想要做那一部分,然後使用該函數來獲得'x'的風格,無論這是... –