Folium 标记内的数字 - Geopandas 探索

问题描述 投票:0回答:1

我想根据地理数据框中的一列在 folium 标记内添加数字。

我期待这样的事情Folium marker with number

在这篇post中,他们使用 BeautifyIcon 实现了它。

我正在使用 GeoPandas 探索功能和 folium,所以我不知道如何像在另一篇文章中那样在没有循环的情况下放置数字。

这是我尝试过的,但没有运气。它只是抛出错误“对象类型系列不是 JSON 可序列化”。

    import folium.plugins as plugins
    gdfNORTE.explore(
        m=m,  
        marker_type='marker', 
        #marker_kwds={'icon': folium.map.Icon(icon='map-marker', prefix='fa')},
        marker_kwds={'icon': (plugins.BeautifyIcon(icon="map-marker", icon_shape="marker", number=gdfNORTE["Cantidad de veces visitado"]))},
        tooltip=["CALLE","NUMERO","ACT ECON","DESCRIPCION","CANT_TRAB","TRAB", "Cantidad de veces visitado"],  
        tooltip_kwds=dict(labels=True),  
        name="Domicilios visitados",
        prefer_canvas=True,
        
    
        
    )

谢谢。

python pandas geopandas folium folium-plugins
1个回答
0
投票

受到linked Q/A 的启发,你可以尝试这个:

我将使用文档中使用的 GeoDataFrame example 来为您提供一般逻辑。

           City    Country  Latitude  Longitude                     geometry
0  Buenos Aires  Argentina    -34.58     -58.66  POINT (-58.66000 -34.58000)
1      Brasilia     Brazil    -15.78     -47.91  POINT (-47.91000 -15.78000)
2      Santiago      Chile    -33.45     -70.66  POINT (-70.66000 -33.45000)
3        Bogota   Colombia      4.60     -74.08    POINT (-74.08000 4.60000)
4       Caracas  Venezuela     10.48     -66.86   POINT (-66.86000 10.48000)

import folium
from folium.plugins import BeautifyIcon

# to simulate a label column and potentially, a color too
hex_colors = ["#ff7f0e", "#2ca02c", "#7f7f7f", "#1f77b4", "#9467bd"]
gdf["Label"], gdf["Color"] = range(1, len(gdf)+1), hex_colors

m = folium.Map(location= gdf.loc[0, ["Latitude", "Longitude"]].tolist(), zoom_start=10)

cols = ["City", "Longitude", "Latitude", "Label", "Color"]
    
for city, lon, lat, label, color in gdf[cols].to_numpy():

    # feel free to custom the html
    html=f"""<h4>{city}</h4>"""

    iframe = folium.IFrame(html=html, width=200, height=150)

    folium.Marker(
        location=[lat, lon], popup=folium.Popup(iframe, max_width=650),
        icon=BeautifyIcon(
            icon="arrow-down",
            icon_shape="marker",
            number=str(label),
            border_color= "#000000",
            background_color=color,
            text_color="#FFFFFF"
        )
    ).add_to(m)

m

输出:

© www.soinside.com 2019 - 2024. All rights reserved.