上一次我们创建具有许多功能的精美地图时,请参见此处。这次,我将向您展示如何自定义不同的内容。我使用相同的数据。
map1 = folium.Map(location = [10
让我们从标记开始。以前我们已经使用过图标,但可能要使用圆圈。从我的角度来看,圆的唯一优点是您可以使圆的半径与某些变量相关。例如,一个城市的人口显示以圆圈的大小反映出来。
df = pd.read_excel('A-cities.xlsx')
位置= df [[''lat','lng']]
locationlist = location.values.tolist()
对于范围(0,len(位置列表))中的i:
大叶
location = [df.iloc ['lat'],df.iloc ['lng']],
popup = df.iloc ['city'],
半径= 1,
color ='blue',
fill = True,
fill_color ='蓝色'
).add_to(map1)
乍一看,数据显示“人口”栏中有一些NaN。因此,清理它们:d f.dropna(subset = ['population'],inplace = True)。圆形标记代码如下:
对于范围(0,len(位置列表))中的i:
大叶
location = [df.iloc ['lat'],df.iloc ['lng']],
popup = df.iloc ['city'],
radius = df.iloc ['population'] / 10,
color ='blue',
fill = True,
fill_color ='蓝色'
).add_to(map1)
在线气泡图有很多漂亮的应用程序。我非常喜欢差距观察者,如果您必须用气泡进行可视化,可以建议考虑他们的示例。
另一个流行的标记选项是图标。有很多定制的可能性。如果您需要标记上的船,工厂或太阳等,请使用google。
我这里有一个锚图标的例子。除了标志之外,您还可以自定义标志和图标本身的颜色。请注意,当您将符号和背景色组合在一起时,它们看起来可能与您期望的不同。我的假设是大叶在两者上都使用颜色层。因此,您可能希望选择更多或更少的对比度。尝试各种组合以获得最佳组合。
icon = folium.Icon(color ='lightgray',icon_color ='#75972D',icon ='anchor',prefix ='fa')
现在,您有了一个标记和一个图标。让我们弹出一个窗口。要自定义弹出窗口,您可以申请纯文本(html):
popup ='客户:{} <br>城市:{} <br>国家/地区:{} <br>站点:{} <br>数量[t]:{} <br>'.format(df ['客户' ] .iloc ,df ['City']。iloc ,
df ['country']。iloc ,df.Site.iloc ,
df.Quantity.round(1).iloc )
在这里,我向数量添加了格式化功能,以四舍五入的方式取值。Round(1)表示1个小数点。
如果您想弹出更漂亮的弹出窗口,请应用html。首先,编写一个函数,然后在地图线上调用它。在下面的示例中,我将弹出窗口格式化为2列表。
d ef fancy_html(row):
我=行
人口= df ['人口'] .iloc
国家= df ['国家'] .iloc
#在这里您可以根据需要添加任意多的行
#表列的颜色
left_col_colour =“#C9C5C5”
right_col_colour =“#A3A0A0”
html =“”“ <!DOCTYPE html>
<html>
#格式化表格
<头>
#这行是弹出窗口的标题
<h4 style =“ margin-bottom:0”; width =“ 300px”> {} </ h4>“”“。format(国家/地区)+”“”
</ head>
<table style =“ height:100px; width:350px;”>
<身体>
<tr>
<td style =“ background-color:”“” + left_col_colour +“”“;”> <span style =“ color:#ffffff;”>人口</ span> </ td>
<td style =“ width:200px; background-color:”“” + right_col_colour +“”“;”> {} </ td>“”“。format(Population)+”“”
</ tr>
<tr>
<td style =“ background-color:”“” + left_col_colour +“”“;”> <span style =“ color:#ffffff;”>无论什么[t] </ span> </ td>
<td style =“ width:200px; background-color:”“” + right_col_colour +“”“;”> {} </ td>“”“。format(无论如何)+”“”
</ tr>
</ tbody>
</ table>
</ html>
“”
返回html
请注意,如果您在弹出表中有数字并且必须对其设置格式,则可以这样操作:Whatever = df ['whatever']。round(decimals = 0).astype(int).iloc [i ]。句子舍入的第二部分(小数= 0)抑制小数点。
如果要在某些情况下为标记着色,请使用以下代码,其中包括将其添加到地图中。在此示例中,如果人口高于或低于平均值,则选择区分城市。如果需要任何其他条件,只需扩大if函数。在 iframe = branca.element行中。定义弹出窗口的大小。对于示例数据中的2行,此大小太大了。但是您可以修复它!
对于范围(0,len(df))中的i
html = fancy_html(i)
iframe = branca.element.IFrame(html = html,width = 400,height = 300)
popup = folium.Popup(iframe,parse_html = True)
criterium = df ['population']。iloc
如果标准> 1.791421e + 05:
颜色=“红色”
其他:
颜色=“绿色”
folium.Marker([df.iloc ['lat'],df.iloc ['lng']],popup = popup,icon = folium.Icon(
color = color,icon ='info',prefix ='fa'))。add_to(map1)
而且,如果您使用不同的颜色作为标记,则肯定需要一个图例:
legend_html ='''
<div style =“ xg-p:已修复;
底部:10px;左:10px;宽度:100px;高度:80px;
边框:2px纯灰色;z-index:9999; font-size:12px;
“> Legend <br>
&nbsp; 美国广播公司 <i class =“ fa fa-map-marker fa-2x” style =“ color:#21679E”> </ i> <br>
&nbsp; DEF&nbsp; <i class =“ fa fa-map-marker fa-2x” style =“ color:#81A930”> </ i> <br>
</ div>
'''
m.get_root()。html.add_child(folium.Element(legend_html))
请仔细检查地图和图例上标记的颜色。由于某些原因,它们不匹配。您可以在图例功能中使用十六进制颜色数字进行调整。
关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!