我试图迭代一只熊猫的数据,用自定义图标作为标记,而不是默认的图标,在Folium地图上绘制多个地理位置。
首先,我创建了一个熊猫数据,如下所示:
# dependencies
import folium
import pandas as pd
from google.colab import drive
drive.mount('/content/drive/')
# create dummy data
df = {'Lat': [22.50, 63.21, -13.21, 33.46],
'Lon': [43.91, -22.22, 77.11, 22.11],
'Color': ['red', 'yellow', 'orange', 'blue']
}
# create dataframe
data = pd.DataFrame(df)然后,我创建了一个缩放因子为2的世界地图:
world = folium.Map(
zoom_start=2
)我可以通过遍历dataframe行来绘制位置,如下所示:
x = data[['Lat', 'Lon', 'Color']].copy()
for index, row in x.iterrows():
folium.Marker([row['Lat'], row['Lon']],
popup=row['Color'],
icon=folium.Icon(color="red", icon="info-sign")
).add_to(world)
world这会产生以下图形:

为了使用自定义图标,我需要使用folium.features.CustomIcon并将图像路径声明为存储图像的Google上的位置。
pushpin = folium.features.CustomIcon('/content/drive/My Drive/Colab Notebooks/pushpin.png', icon_size=(30,30))我可以在一个指定的地点在地图上使用这一点如下:
world = folium.Map(
zoom_start=2
)
folium.Marker([40.743720, -73.822030], icon=pushpin).add_to(world)
world 生成以下图形

但是,当我试图在迭代中使用自定义图标时,它似乎不起作用,只绘制了第一个坐标对和默认标记。
pushpin = folium.features.CustomIcon('/content/drive/My Drive/Colab Notebooks/pushpin.png', icon_size=(30,30))
world = folium.Map(
zoom_start=2
)
x = data[['Lat', 'Lon', 'Color']].copy()
for index, row in x.iterrows():
folium.Marker([row['Lat'], row['Lon']],
icon=pushpin,
popup=row['Color'],
).add_to(world)
world如图所示:

我的期望是,所有4个位置将被绘制为图钉标记。任何帮助都非常感谢。
发布于 2022-10-26 19:03:11
这样做的唯一方法似乎是在for循环中放置自定义图标调用,以便它为每次迭代初始化,例如:
world = folium.Map(
zoom_start=2
)
x = data[['Lat', 'Lon', 'Color']].copy()
for index, row in x.iterrows():
pushpin = folium.features.CustomIcon('/content/drive/My Drive/Colab Notebooks/pushpin.png', icon_size=(30,30))
folium.Marker([row['Lat'], row['Lon']],
icon=pushpin,
popup=row['Color'],
).add_to(world)
world这就产生了以下内容:

https://stackoverflow.com/questions/74200088
复制相似问题