用R软件绘制中国分省市地图
2014-10-02 20:08
357 查看
鉴于最近有不少人在讨论用R软件绘制地图的问题,我也就跟着凑了凑热闹,对相应的方法学习了一番。下面的这篇文章是一个初步的介绍,还有很多内容仍在学习和探索中,如果大家有什么意见或建议,我将根据自己学习的情况对文章进行进一步的补充。
在R中绘制地图其实是十分方便的,最直接的办法大概就是安装
幸运的是,通过谢益辉的这篇博文我们已经可以大体知道该如何操作了,下面就为大家介绍一下具体的步骤。
首先,从这里下载中国地图的GIS数据,这是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf、bou2_4p.shp和bou2_4p.shx),将这三个文件解压到同一个目录下,并在R中设好相应的工作空间,然后安装
getColor=function(mapdata,provname,provcol,othercol)
{
f=function(x,y) ifelse(x %in% y,which(y==x),0);
colIndex=sapply(mapdata$att.data$NAME,f,provname);
fg=c(othercol,provcol)[colIndex+1];
return(fg);
}[/code]
as.character(na.omit(unique(x$att.data$NAME)));[/code]
由此生成的向量有33个元素,少了澳门特别行政区,这是这个数据中的一块瑕疵。在
利用类似的方法就可以根据自己的需要对不同的区域进行着色,下面再举一例。从国家统计局获取2007年我国各地区的人口数据,然后根据人口的多少对各省份进行着色。程序如下:
在R中绘制地图其实是十分方便的,最直接的办法大概就是安装
maps和
mapdata这两个包,然后输入下面的命令:
map()函数还可以加上很多参数,在这里就不一一详述,具体的用法只需问号之。然而仔细看一看这张地图你会发现重庆市和四川省仍然是浑然一体,可见该地图的数据应该是有些年头了。
幸运的是,通过谢益辉的这篇博文我们已经可以大体知道该如何操作了,下面就为大家介绍一下具体的步骤。
首先,从这里下载中国地图的GIS数据,这是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf、bou2_4p.shp和bou2_4p.shx),将这三个文件解压到同一个目录下,并在R中设好相应的工作空间,然后安装
maptools包,运行如下程序:
library(maptools); x=read.shape('bou2_4p.shp');#下文中会继续用到x这个变量, #如果你用的是其它的名称, #请在下文的程序中也进行相应的改动。 plot(x);
getColor=function(mapdata,provname,provcol,othercol)
{
f=function(x,y) ifelse(x %in% y,which(y==x),0);
colIndex=sapply(mapdata$att.data$NAME,f,provname);
fg=c(othercol,provcol)[colIndex+1];
return(fg);
}[/code]
as.character(na.omit(unique(x$att.data$NAME)));[/code]
由此生成的向量有33个元素,少了澳门特别行政区,这是这个数据中的一块瑕疵。在
x$att.data的第899行有一个
NA,不知道它代表的是否就是澳门。
利用类似的方法就可以根据自己的需要对不同的区域进行着色,下面再举一例。从国家统计局获取2007年我国各地区的人口数据,然后根据人口的多少对各省份进行着色。程序如下:
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=1-pop/max(pop)/2,green=1-pop/max(pop)/2,blue=0); plot(x,fg=getColor(x,provname,provcol,"white"),xlab="",ylab="");
相关文章推荐
- 用R软件绘制中国分省市地图
- 用R软件绘制中国分省市地图
- 用R软件绘制中国分省市地图
- 用R软件绘制中国分省市地图
- 用R软件绘制中国分省市地图
- d3.js——绘制动态中国地图
- 使用Echarts绘制中国地图看这篇就够了(认真脸!)
- 使用raphael.js绘制中国地图
- d3 在中国地图上绘制城市
- Basemap绘制中国地图
- 小鱼儿的菜鸟笔记二 用R语言绘制中国完整地图
- SVG绘制中国地图
- d3 绘制中国地图城市及城市间的连线
- R绘制中国地图,并展示流行病学数据
- 一个让echarts中国地图包含省市轮廓的技巧
- Android 绘制中国地图及热点省份分布
- Python和Perl绘制中国北京跑步地图的方法
- 一个让echarts中国地图包含省市轮廓的技巧
- Raphael绘制中国地图实现点击哪儿在哪儿显示柱状图
- js绘制中国地图