我有像下面的pandas数据框
Latitude Longitude Class
40.7145 -73.9425 A
40.7947 -73.9667 B
40.7388 -74.0018 A
40.7539 -73.9677 B
我想在folium map上绘制上图,它也会显示与lat和long相关的类 我正在使用以下代码。
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)
如何绘制和显示类,以便在地图上更容易理解分类的明智分布。
答案 0 :(得分:5)
您可以更改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
使用颜色将类与简单的字典区分开来
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