gpt4 book ai didi

python - 使用 Python folium 库将鼠标悬停在世界地图上时如何显示国家名称和人口?

转载 作者:行者123 更新时间:2023-12-05 05:04:39 28 4
gpt4 key购买 nike

我用 python 使用 folium 制作了一个 Webmap。 map 读取包含国家名称和人口数量的 population.json 文件,并在浏览器上显示 map 。

代码如下:

import pandas
import folium

map = folium.Map(location=[32, 0], zoom_start=4.3, tiles = "CartoDB positron", max_zoom = 100)


fgp = folium.FeatureGroup(name="Population" )

def colorPicker(population):
if population < 10000000:
return 'green'
elif population >= 10000000 and population < 500000000:
return 'orange'
else:
return 'red'


fgp.add_child(folium.GeoJson(data=open('population.json', 'r', encoding='utf-8-sig').read(),
style_function=lambda x: {'fillColor': colorPicker(x['properties']['POP2005'])},
tooltip=lambda x: '%s\n%s' % (x['properties']['Name'], x['properties']['POP2005'])

))


map.add_child(fgp)

map.save("index.html")

我使用以下代码创建了要素组和 add_child,以根据人口规模为 map 上的每个国家/地区添加颜色:

style_function=lambda x: {'fillColor': colorPicker(x['properties']['POP2005'])}

然后我想要的是每当用户将鼠标悬停在一个国家/地区上时,我想显示该国家/地区的名称和该国家/地区的人口规模。为此,我写道:

tooltip=lambda x: '%s\n%s' % (x['properties']['Name'], x['properties']['POP2005'])

它没有给我国家的名字,而是给了我这个…… Picture of map

它应该说“中国:‘人口规模’”,但实际上显示的是“在 0x24...”

我不确定为什么。我尝试了多种工具提示,例如:

tooltip=lambda x: '{0}\n{1}'.format(x['properties']['Name'], x['properties']['POP2005']) 
tooltip=lambda x: '%s\n%s' % (x['properties']['Name'], x['properties']['POP2005'])
tooltip= lambda x: {'text': x['properties']['Name']}))
tooltip= lambda x: {'%s': x['properties']['Name']}))

但仍然显示相同的输出

这里是 population.json 文件的链接:file

最佳答案

使用GeoJsonGeoJsonTooltip类:

import folium

m = folium.Map(location=[32, 0],
zoom_start=4.3,
tiles = "CartoDB positron",
max_zoom = 100)

def colorPicker(population):
if population < 10000000:
return 'green'
elif population >= 10000000 and population < 500000000:
return 'orange'
else:
return 'red'

folium.GeoJson(open('population.json', 'r', encoding='utf-8-sig').read(),
name = 'Population',
style_function = lambda x: {'fillColor': colorPicker(x['properties']['POP2005'])},
tooltip = folium.GeoJsonTooltip(fields=('NAME', 'POP2005',),
aliases=('Country','Population')),
show = True).add_to(m)


#folium.LayerControl().add_to(m)
m

你得到:

enter image description here

关于python - 使用 Python folium 库将鼠标悬停在世界地图上时如何显示国家名称和人口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60963094/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com