美文网首页Learning R程序员R
R语言之数据可视化---地图可视化leaflet包(上)

R语言之数据可视化---地图可视化leaflet包(上)

作者: willnight | 来源:发表于2017-03-23 22:33 被阅读531次

    包的github链接地址:https://github.com/rstudio/leaflet
    基于leaflet的中文扩展包出自chiffon大大github地址:https://github.com/Lchiffon/leafletCN

    一.安装方式:

    可见作者关于安装的文章

    二.使用方法:

    1. leaflet的一些用法介绍:

    library(leaflet)
    m<-leaflet()
    at<-addTiles(m)
    addMarkers(at,lng = 120.7588630000,lat =31.6597700000 ,popup = 'willnight')
    也可用管道操作(推荐):
    leaflet()%>%addTiles()%>%addMarkers(lng = 120.7588630000,lat = 31.6597700000,popup = 'willnight')

    leaflet1.png

    设置地图大小:可通过zoom参数控制
    leaflet()%>%setView(lng=120.758863,lat=31.659770,zoom=9)%>%addTiles()

    添加圆圈等小功能:(实例展示:http://xwj.565tech.com/jianshu/leaflet1.html
    leaflet()%>%addTiles()%>%addMarkers(lng = 120.7588630000,lat = 31.6597700000,popup = 'willnight')%>%addCircles(lng = 120.7588630000,lat = 31.6597700000)

    leaflet2.png

    还有一些小功能可以在R中用?help的方式获取用法,基本都是类似的!!!

    2.地图缩小聚合:(实例展示:http://xwj.565tech.com/jianshu/leaflet2.html
    标记图钉
    df<-data.frame(lat=runif(20,min=0,max=70),lon=runif(20,0,160))
    df%>%leaflet()%>%addTiles()%>%addMarkers()

    自定义图标
    makeIcon的语法如下:
    iconUrl : 图标的url地址
    iconWidth :图标的宽度
    iconHeight: 图标的高度
    iconAnchorX :图标的中心点x轴偏移(以左上角为0,0)
    iconAnchorY :图标的中心点Y轴偏移(以左上角为0,0)

    redIcon <- makeIcon(
    iconUrl = "http://img.blog.csdn.net/20161015170050664",
    iconWidth = 38, iconHeight = 38,
    iconAnchorX = 19, iconAnchorY = 19
    )
    df%>%leaflet()%>%addTiles()%>%addMarkers(icon=redIcon)

    用不同的图标表示不同的类别
    redIcon1 <- makeIcon(
    iconUrl = "http://img.blog.csdn.net/20161015170050664",
    iconWidth = 38, iconHeight = 38,
    iconAnchorX = 19, iconAnchorY = 19
    )
    redIcon2 <- makeIcon(
    iconUrl = "http://img.blog.csdn.net/20161015173507516",
    iconWidth = 38, iconHeight = 38,
    iconAnchorX = 19, iconAnchorY = 19
    )
    leaflet()%>%addTiles()%>%addMarkers(data=df[1:10,],icon=redIcon1)%>%addMarkers(data=df[11:20,],icon=redIcon2)

    makeicon支持r中的ifelse
    leafIcons <- icons(
    iconUrl = ifelse(bj3H$dj=="三级",
    "http://img.blog.csdn.net/20161015170050664",
    "http://img.blog.csdn.net/20161015173507516"
    ),
    iconWidth = 38, iconHeight = 38,
    iconAnchorX = 19, iconAnchorY = 19

    )
    leaflet(bj3H)%>%addProviderTiles("CartoDB.Positron")%>%
    addMarkers(popup=~mc,icon = leafIcons)

    更多类别的图标
    yyIcons <- iconList(
    中国医科院所属医院 = makeIcon("http://img.blog.csdn.net/20161015181859390", iconWidth =32, iconHeight = 32),
    北京区县属医院 = makeIcon("http://img.blog.csdn.net/20161015182217958", iconWidth =32, iconHeight = 32),
    北京市卫生局直属医院= makeIcon("http://img.blog.csdn.net/20161015181915828",iconWidth =32, iconHeight = 32),
    北京中医药大学= makeIcon("http://img.blog.csdn.net/20161015181934175",iconWidth =32, iconHeight = 32),
    卫生部直属医院= makeIcon("http://img.blog.csdn.net/20161015181950879",iconWidth =32, iconHeight = 32),
    中国中医科学院= makeIcon("http://img.blog.csdn.net/20161015182031737",iconWidth =32, iconHeight = 32),
    驻京武警医院= makeIcon("http://img.blog.csdn.net/20161015182043285",iconWidth =32, iconHeight = 32),
    驻京部队医院= makeIcon("http://img.blog.csdn.net/20161015182054598",iconWidth =32, iconHeight = 32),
    部属厂矿高校医院= makeIcon("http://img.blog.csdn.net/20161015182109473",iconWidth =32, iconHeight = 32),
    北京大学附属医院= makeIcon("http://img.blog.csdn.net/20161015182132521",iconWidth =32, iconHeight = 32)
    )

    leaflet(bj3H) %>%addProviderTiles("CartoDB.Positron") %>%
    addMarkers(icon = yyIcons[fl],popup=fl)

    自动聚合图标
    df%>%leaflet()%>%addTiles()%>%addMarkers(clusterOptions = markerClusterOptions(),data=df[1:10,],icon=redIcon1)%>%addMarkers(clusterOptions = markerClusterOptions(),data=df[11:20,],icon=redIcon2)
    demo
    leaflet(bj3H) %>%addProviderTiles("CartoDB.Positron") %>%
    addMarkers(clusterOptions = markerClusterOptions(),icon = yyIcons[fl],popup=fl)

    可实现地图缩小聚合的效果

    3.图标弹窗:(实例展示:http://xwj.565tech.com/jianshu/leaflet3.html

    tiananm <- paste(

                 "<p>","天安门,坐落在中华人民共和国首都北京市的中心、
    
    
                 故宫的南端,与天安门广场以及人民英雄纪念碑、毛主席纪念堂、
                 
                 人民大会堂、中国国家博物馆隔长安街相望,占地面积4800平方米,
                 
                 以杰出的建筑艺术和特殊的政治地位为世人所瞩目。","</p>",
                 
                 "<a href='http://www.tiananmen.org.cn/index.htm'>点击查看更多</a>",
                 
                 "<p><img src='http://img.blog.csdn.NET/20161016004301807' width='50%'></p>",
                 
                 "<p><img src='http://img.blog.csdn.Net/20161016005048911' width='50%'></p>"
    

    )

    leaflet()%>%addTiles()%>%addMarkers(lng=116.391, lat=39.906, popup=tiananm)

    4.矩形框点击弹出文本:(实例展示:http://xwj.565tech.com/jianshu/leaflet4.html

    leaflet() %>%addProviderTiles("Esri.WorldImagery") %>%

    addRectangles(
    lng1=116.1, lat1=39.7,
    lng2=116.63, lat2=40.1,
    weight = 3,color = "red",fillColor = "transparent",
    opacity = 1,popup=“willnight"
    )

    leaflet包上篇就先介绍到这边,各位可以结合自身需求,去定制个性化的可视化地图,结合前面介绍的baidumap包获取经纬度,基本大多数地图可视化功能都可以实现,下篇将介绍leafletCN和一些地图主题!!!

    部分代码参考虾神的博客:http://blog.csdn.net/allenlu2008/article/details/52816708

    相关文章

      网友评论

        本文标题:R语言之数据可视化---地图可视化leaflet包(上)

        本文链接:https://www.haomeiwen.com/subject/kvrznttx.html