R语言与地图(一)

浏览: 2395

Hello,

        大家好! 很高兴能借助这个平台每周5分钟与大家分享 一点儿数据分析 的那些事。

        数据分析的工具很多,而R语言因其免费开源、易于解释和统计分析很受高校和业界的青睐。今天介绍 R软件在绘制地图中的初级应用。主要以code 和 图示 的方式向大家展现。

       1. 世界地图:

        install.packages('maps')     ### 安装包

        library('maps')   ### 载入包

        map(database='world',region='.',fill=TRUE,col=rainbow(200))   ### 绘图

        title('世界地图')      ### 加标题

        ?map      ### 查看文档

QQ截图20161130100525.png

        2.中国地图:

        (Note:首先从网上下载GIS数据,解压到GIS_data目录。web: content/uploads/2009/07/chinaprovinceborderdata_tar_gz.zip)

        setwd('F:/GIS_data')  ### 设置工作目录       

        install.packages('maptools'); library(maptools)

        china<- readShapePoly('bou2_4p.shp')    ### 获得各省的边界信息

        plot(china)

        

        3.给中国地图上色:

        getColor<- function(mapdata,provname,provcol,othercol){

          f<-function(x,y) ifelse(x %in% y, which(y==x), 0)

          colInd<- sapply(mapdata@data$NAME, f, provname)

          col<- c(othercol,provcol)[colInd+1]

          col

        }    ###定义函数:给34个省份添加颜色

        provname=c("北京市","天津市","河北省","山西省","内蒙古自治区", "辽宁省","吉林省","黑龙江省","上海市","江苏省", "浙江省","安徽省","福建省","江西省","山东省", "河南省","湖北省","湖南省","广东省","广西壮族自治区","海南省","重庆市","四川省","贵州省", "云南省","西藏自治区","陕西省","甘肃省","青海省","宁夏回族自治区","新疆维吾尔自治区","台湾省", "香港特别行政区")      ###省份向量

       pop=c(1633,1115,6943,3393,2405,4298,2730,3824,1858,7625,5060,6118,3581,4368,9367,9360,5699,6355,9449,4768,845,2816,8127,3762,4514,284,3748,2617,552,610,2095,2296,693)    ###省人口向量

       provcol=rgb(red=pop/max(pop),green=1-pop/max(pop),blue=0) ###省颜色

       plot(china,col=getColor(china,provname,provcol,"white"),xlab="",ylab="")    ###中国各省人口数量图

       points(c(113.25,117,113.7), c(23.13333333,36.63333333,34.8), pch = 19, col = rgb(0, 0, 0, 0.5))

       text(c(113.25,117,113.7), c(23.13333333,36.63333333,34.8),c('广东','山东','河南'), cex = 0.7, col = 'blue')     ###标出人口数量前三的省份

       title('中国各省人口数量图')


        4. 部分省图:

        prov=c('河北省','山东省','安徽省','江苏省','上海市')     ###定义绘制的省份

        plot(china, col = getColor(china,prov, rep("red", 5), "white"), border = "white", xlab = "", ylab = "")

        

        5. 坐标与距离

       install.packages('ggmap'); library(ggmap)

       geocode('East China Normal University')     ### 获取华师大(普陀区)的坐标

<      lon      lat

< 121.4095 31.22729

        geocode('East China Normal University', output='all')     ### 详情

<      address

< "Hua Dong Shi Fan Da Xue Ti Yu Guan, HuaShiDa, Putuo Qu, Shanghai Shi, China, 200062"

        mapdist('East China Normal University','Shanghai South Station')

<  m      km      miles

  3048 3.048 1.894027

< seconds  minutes     hours

   695         11.58333  0.1930556

        6. 地势图和道路图:

        install.packages('mapproj'); library(mapproj)

        map<-get_map(location='China',zoom=4)  ### 获取地势图

        ggmap(map)

        

        map<-get_map(location='Shanhai',zoom=11,maptype='roadmap')

        ggmap(map)

基于 GoogleMaps

        map<-get_map(location='Shanghai',zoom=11,maptype='roadmap',source='osm')

基于OpenStreetMap

        可见,基于Google的做的更清晰一些哦~

如有兴趣,可以关注一下微信公众号:

推荐 2
本文由 ecnu刘洋 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

1 个评论

这个材料非常好!正需要!太谢谢了!

要回复文章请先登录注册