普通 'def' 函数而不是 lambda
Normal 'def' function instead of lambda
以下代码生成一个网络地图,其中国家/地区按人口着色,其值来自 world.json。
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')
Link,共 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
lambda 可以用这样的函数替换:
def style_function(x):
return {'fillColor':'green' if x['properties']['POP2005'] <= 10000000 else 'orange' if 10000000 < x['properties']['POP2005'] < 20000000 else 'red'}))
然后你可以将函数名传递给 kwarg:
folium.GeoJson(
data=...,
name=...,
style_function=style_function
)
如果我没理解错的话,你需要做这样的功能(x
是geojson):
def my_style_function(x):
color = ''
if x['properties']['POP2005'] <= 10e6:
color = 'green'
elif x['properties']['POP2005'] < 2*10e6:
color = 'orange'
return {'fillColor': color if color else 'red'}
并简单地将其分配给 style_function
参数(不带括号):
map.add_child(folium.GeoJson(data=open('world.json', encoding='utf-8-sig'),
name="Unemployment",
style_function=my_style_function))
以下代码生成一个网络地图,其中国家/地区按人口着色,其值来自 world.json。
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')
Link,共 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
lambda 可以用这样的函数替换:
def style_function(x):
return {'fillColor':'green' if x['properties']['POP2005'] <= 10000000 else 'orange' if 10000000 < x['properties']['POP2005'] < 20000000 else 'red'}))
然后你可以将函数名传递给 kwarg:
folium.GeoJson(
data=...,
name=...,
style_function=style_function
)
如果我没理解错的话,你需要做这样的功能(x
是geojson):
def my_style_function(x):
color = ''
if x['properties']['POP2005'] <= 10e6:
color = 'green'
elif x['properties']['POP2005'] < 2*10e6:
color = 'orange'
return {'fillColor': color if color else 'red'}
并简单地将其分配给 style_function
参数(不带括号):
map.add_child(folium.GeoJson(data=open('world.json', encoding='utf-8-sig'),
name="Unemployment",
style_function=my_style_function))