8

我有如下的熊猫数据框

Latitude          Longitude          Class
 40.7145           -73.9425            A
 40.7947           -73.9667            B
 40.7388           -74.0018            A
 40.7539           -73.9677            B

我想在 folium 地图上绘制上面的图,该地图还将显示与纬度和经度相关的类。
我正在使用以下代码。

import folium

map_osm = folium.Map(location=[40.742, -73.956])
train_df.apply(lambda row:folium.CircleMarker(location=[row["Latitude"], 
                                                  row["Longitude"]]).add_to(map_osm),
     axis=1)

如何绘制和显示类别,以便在地图上更容易理解点的类别分布。

4

1 回答 1

13

您可以更改 CircleMarkers 的填充颜色。也许添加一些弹出窗口或标记它们

train_df
   Latitude  Longitude Class
0   40.7145   -73.9425     A
1   40.7947   -73.9667     B
2   40.7388   -74.0018     A
3   40.7539   -73.9677     B

使用颜色来区分具有简单 dict 的类

colors = {'A' : 'red', 'B' : 'blue'}

map_osm = folium.Map(location=[40.742, -73.956], zoom_start=11)

train_df.apply(lambda row:folium.CircleMarker(location=[row["Latitude"], row["Longitude"]], 
                                              radius=10, fill_color=colors[row['Class']])
                                             .add_to(map_osm), axis=1)

map_osm

在此处输入图像描述

使用颜色和弹出窗口

colors = {'A' : 'red', 'B' : 'blue'}

map_osm = folium.Map(location=[40.742, -73.956], zoom_start=11)

train_df.apply(lambda row:folium.CircleMarker(location=[row["Latitude"], row["Longitude"]], 
                                              radius=10, fill_color=colors[row['Class']], popup=row['Class'])
                                             .add_to(map_osm), axis=1)

map_osm

在此处输入图像描述

使用 DivIcon 使用颜色和“标签”。切换到使用 iterrows() 和 for 循环,因为我们正在创建 CircleMarkers 和 Markers(用于标签)

from folium.features import DivIcon

colors = {'A' : 'red', 'B' : 'blue'}


map_osm = folium.Map(location=[40.742, -73.956], zoom_start=11)

for _, row in train_df.iterrows():
    folium.CircleMarker(location=[row["Latitude"], row["Longitude"]], 
                                radius=5, fill_color=colors[row['Class']]).add_to(map_osm)

    folium.Marker(location=[row["Latitude"], row["Longitude"]], icon=DivIcon(icon_size=(150,36), icon_anchor=(0,0),
        html='<div style="font-size: 16pt; color : {}">{}</div>'.format(colors[row['Class']], 
                                                                        row['Class']))).add_to(map_osm)


map_osm

在此处输入图像描述

于 2017-06-10T16:29:01.817 回答