使用不同颜色的标记创建三叶草地图



我正在使用folium绘制基于lat和lng的地图。我的数据帧是这样的,其中每个lat和lng作为一个属性"Circuito":

Circuito Latitude Longitude    
L2RC 41.36394 -8.550200
L21M 41.22638 -8.693360
LBXP 41.15796 -8.610030
L2RC 41.36394 -8.550200
LERM 41.23865 -8.531550
LCAN 41.14016 -8.634990
LARE 41.19195 -8.556460
LCAR 41.05805 -8.563920
LBXP 41.15786 -8.600700
LBAG 41.18931 -8.526040

我想基于属性"0"来绘制标记的颜色;Circuito";。但我只发现了有少量不同颜色可供绘制的例子,事实并非如此。现在我有这样的东西:

for i in range(len(df)):
if df.loc[i,'Circuito']==L2RC
icon=folium.Icon(color='white')
l2rc_group.add_child(folium.Marker((df[i, 'Latitude'],df[i, 'Longitude']), icon=icon))

这个解决方案的问题是,我必须为每一个可能的"如果"条件;电路;属性(还有很多(,我必须写颜色来绘图。我一直在寻找一个不需要的解决方案,但我不知道这是否可能。

谢谢!

编辑:可以使用不同的图标而不是标准标记吗?如果是,请尝试:

# list of available icons
help(folium.Icon)
# implement:
icon_color = ["#"+''.join([random.choice('ABCDEF0123456789') for i in range(6)])]
icon = folium.Icon(icon="globe", icon_color=icon_color, color="lightgreen", prefix="fa")

此方法将生成一个随机的十六进制颜色,并将其分配给每个Circuito的图标。

import random
import pandas as pd
for i in range(len(df)):
icon_color = ["#"+''.join([random.choice('ABCDEF0123456789') for i in range(6)])] 
icon=folium.Icon(color=icon_color)
l2rc_group.add_child(folium.Marker((df[i, 'Latitude'],df[i, 'Longitude']), icon=icon))

编辑:不幸的是,在阅读Folium文档后,它们似乎将您限制为19种颜色。

这是另一种使用可用颜色列表的方法。考虑到你需要62种不同的颜色,这还不够。也许使用某些颜色两次,但更改标记的轮廓颜色以区分它,或者为每个和有限的调色板使用不同的图标。

marker_colors = [
'red',
'blue',
'gray',
'darkred',
'lightred',
'orange',
'beige',
'green',
'darkgreen',
'lightgreen',
'darkblue',
'lightblue',
'purple',
'darkpurple',
'pink',
'cadetblue',
'lightgray',
'black'
]
for i in range(len(df)):
for color in marker_colors:
icon=folium.Icon(color=color)
l2rc_group.add_child(folium.Marker((df[i, 'Latitude'],df[i, 'Longitude']), icon=icon))

标记的Folium标记颜色选项:https://python-visualization.github.io/folium/modules.html#folium.map.Icon.color_options

使用十六进制代码的可能解决方案:Folium 中地图标记中的数字

最新更新