首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用自定义图标为多个地方与叶片和潘达

使用自定义图标为多个地方与叶片和潘达
EN

Stack Overflow用户
提问于 2022-10-25 20:55:27
回答 1查看 70关注 0票数 1

我试图迭代一只熊猫的数据,用自定义图标作为标记,而不是默认的图标,在Folium地图上绘制多个地理位置。

首先,我创建了一个熊猫数据,如下所示:

代码语言:javascript
复制
# 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的世界地图:

代码语言:javascript
复制
world = folium.Map(
    zoom_start=2
    )

我可以通过遍历dataframe行来绘制位置,如下所示:

代码语言:javascript
复制
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上的位置。

代码语言:javascript
复制
pushpin = folium.features.CustomIcon('/content/drive/My Drive/Colab Notebooks/pushpin.png', icon_size=(30,30))

我可以在一个指定的地点在地图上使用这一点如下:

代码语言:javascript
复制
world = folium.Map(
    zoom_start=2
    )

folium.Marker([40.743720, -73.822030], icon=pushpin).add_to(world)
world 

生成以下图形

但是,当我试图在迭代中使用自定义图标时,它似乎不起作用,只绘制了第一个坐标对和默认标记。

代码语言:javascript
复制
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个位置将被绘制为图钉标记。任何帮助都非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-26 19:03:11

这样做的唯一方法似乎是在for循环中放置自定义图标调用,以便它为每次迭代初始化,例如:

代码语言:javascript
复制
    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

这就产生了以下内容:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74200088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档