json - folium.GeoJson(样式函数)无法按我想要的方式工作

标签 json python-3.x folium

import folium ,pandas ,json

df=pandas.read_csv('Volcanoes_2.txt')

def colors(elev):
    minimum=int(min(df['ELEV']))
    step=int(max((df['ELEV'])-min(df['ELEV']))/3)
    if elev in range (minimum,minimum+step):
        col= "green"
    elif elev in range(minimum+step,minimum+step*2):
        col= "orange"
    else:
        col= "red"
    return col


map_1=folium.Map(location=[df['LAT'].mean(), df['LON'].mean()] ,
zoom_start=6,tiles='mapbox bright')

for name, lon, lat, elev in zip(df['NAME'], df['LON'], df['LAT'],
df['ELEV'] ):
    folium.Marker([lat, lon], popup= name,
     icon = folium.Icon(color =colors(elev))).add_to(map_1)

folium.GeoJson(open('world_geojson.json'),
           name='geojson',
           style_function= lambda x :{'fillcolor':'green' if \
  x['properties']['POP2005']<10000000 \
       else 'orange' if 10000000 <x['properties']['POP2005']>20000000 else 'red'},
       ).add_to(map_1)

folium.LayerControl().add_to(map_1)

map_1.save("map.html")

这是 map 文件https://github.com/xxspider4/new_repo/blob/master/map.html

这是 json 文件 https://github.com/xxspider4/new_repo/blob/master/world_geojson.json

最佳答案

你们非常接近。我可以通过更改 fillcolor 来让它工作至fillColor在你的风格函数中

lambda x :{'fillColor':'green' if \ x['properties']['POP2005']<10000000 \ else 'orange' if 10000000 <x['properties']['POP2005']>20000000 else 'red'}

关于json - folium.GeoJson(样式函数)无法按我想要的方式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44919669/

相关文章:

javascript - 使用 Angular Js 从 API 获取 Json 数据

python - 数据框内的比较

python - 用 folium 绘制标记是否有限制?

python - 如何在 PyQt5 GUI 中显示 Folium map ?

json - 从每首歌中获取 HTTP MP3 流

java - Android 返回空字符串 HTTP

javascript - 定义两个具有相同参数的变量

python 3.x : alternative pprint implementation

python - 无法在 https ://upload. pypi.org/legacy/中上传包

python-3.x - PngImageFile 类型的对象不可 JSON 序列化