楼主: 时光永痕
437 1

[数据挖掘新闻] 地图的乐趣:第2部分 [推广有奖]

  • 0关注
  • 14粉丝

svip3

学术权威

12%

(VIP/贵宾)五级

86%

威望
0
论坛币
26 个
通用积分
57.2086
学术水平
4 点
热心指数
4 点
信用等级
4 点
经验
34190 点
帖子
2733
精华
0
在线时间
321 小时
注册时间
2020-7-21
最后登录
2024-8-1

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
地图的乐趣:第2部分
上一次我们创建具有许多功能的精美地图时,请参见此处。这次,我将向您展示如何自定义不同的内容。我使用相同的数据。
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人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Population Location Whatever decimals Quantity

沙发
school 在职认证  发表于 2020-9-2 13:37:25 |只看作者 |坛友微信交流群

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-9-19 12:11