r语言 中国地图热力图绘制分段设色中国分省热力地图图例怎么改

R语言画中国地图。大神看看这个代码_统计吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:5,642贴子:
R语言画中国地图。大神看看这个代码收藏
install.packages(&sp&)install.packages(&maptools&)library(maptools)library(sp)border &- readShapePoly(&D:\\bou2_4p.shp&)plot(border,col=rainbow(925),ylim = c(18, 54), panel.first = grid())axis(1, lwd = 0); axis(2, lwd = 0); axis(3, lwd = 0); axis(4, lwd = 0)points(120.6,31.3,pch=19,col=rgb(1,0,0))text(120.6,31.3,&名字&,cex=1.5,col=rgb(0,0,0,1))
美国本科统计,天道留学放心选择,成功覆盖全美院校,300名资深留学顾问一对一解析美国本科统计申请细节,留学费用,就业前景等问题,整体规划美国本科统计.
border &- readShapePoly(&D:\\bou2_4p.shp&)这个文件是哪里的
下载的sp和maptools要解压吗?解压之后怎么弄
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或热力型数据地图(HeatMap)做法详解(转)
小博的日志《&》介绍了一个用excel做中国数据地图的办法,得到很多朋友的喜欢,并且都希望能详细了解制作方法,以便进一步DIY当地的数据地图。最近抽空整理了做法详解,供大家参考。因制作过程还是有些复杂的,如果有叙述不够清晰的地方,欢迎提出。
-------------------------------------
作图思路:我们为每个区域准备一个自选图形,按照其数值大小,根据分档阀值、颜色图例,对自选图形填充以相应的颜色,完成一个热力地图。
首先,在网上找到一个矢量格式的地图文件。所谓矢量格式,是使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,其文件后缀名一般为.WMF、.AI、.EPS、.CDR等。Excel可以读取.WMF格式的文件,其他格式的一般需要专门的软件打开。导入Excel后,该地图可以打散为一个个的自选图形,每个自选图形对应一个区域。
如果你要做比较小的地区的数据地图,譬如武汉市分为江汉区、武昌区等,网上可能无法找到相应的矢量地图,这时我们可以自行绘制。
●&&&&&&&&&&找到一个当地的地图图片,一般JPG格式的地图还是很好找的,导入Excel。
●&&&&&&&&&&在放大视图下,使用绘图工具栏-&自选图形-&线条-&自由曲线,按照地图轮廓进行勾描,每个区勾描成一个封闭小块,最后形成一个全市分区的自选图形地图。这个细活需要花一点功夫,但一次完成长期使用,还是值得的。
有了地图图形后,我们开始制作地图的引擎模型。
假设我们的数据源如下,例子文件中D列数据为各省2008年GDP总值。
1、为自选图形命名。
我们用每个省的拼音字母为其图形命名。如选中湖北省的图形,在左上角的名称框中输入湖北的拼音名hubei,回车,则这个图形被命名为hubei,后面会用这个名称来引用这个图形。逐一完成所有区域图形的命名。
很多公司需要按大区进行分析,如华东区、华南区等等,这时我们可以将某几个省的图形组合起来之后再命名。这时候你的数据源也要按华东区、华南区等进行组织。简言之,将大区作为一个区。
2、设置数据分档阀值和图例。
假设我们要把各省GDP数据分为5个层级进行分档填色,在I列设置填色样式,J列填入文字标签,注意I8:J12区域在后面将被拍照引用为图例。在L列设置分档阀值,填入J列标签的下限,M列是为引用准备的名称。
注意在设置分档间距、颜色深浅时,二者应该呈线性比例变化。推荐颜色的的设置方式是使用同一色调的不同饱和度。当有负数时,可从一个色调渐变到另一个色调。
3、为模型定义名称和公式。
=Datamap!$C$8:$D$38
源数据区域
=Datamap!$K$17
临时存放“当前区域”的拼音名,如hubei
ActRegValue
=Datamap!$K$18
临时存放“当前区域”的指标值,如8633
=VLOOKUP(ActReg,RegData,2,FALSE)
ActRegCode
=Datamap!$K$19
临时存放“当前区域”的颜色代码,如color4
=VLOOKUP(ActRegValue,L8:M12,2,TRUE)
=Datamap!$I$8
填色代码1,指向I8
=Datamap!$I$9
填色代码2,指向I9
=Datamap!$I$10
填色代码3,指向I10
=Datamap!$I$11
填色代码4,指向I11
=Datamap!$I$12
填色代码5,指向I12
4、制作填色按钮。
绘制一个按钮,为其指定如下宏代码。
―――――――――――――――――――――――
8 To 38&&'为数据源的起始和结束行号,根据区域的多少来定
Range("ActReg").Value
= Range("datamap!C" & i).Value
’将C列的拼音名填入“当前区域”,即K17
&&&&ActiveSheet.Shapes(Range("ActReg").Value).Select
&&&&’选中“当前区域”对应的图形
Selection.ShapeRange.Fill.ForeColor.RGB
&Range(Range("ActRegCode").Value).Interior.Color
&&&&’将选中的图形填充以“当前区域”的颜色代码所指向的单元格的填充样式
―――――――――――――――――――――――
如代码中的注释所说明,这段宏对每一个区域,将其拼音名填入K17,(这时K18会根据K17的拼音名,查找返回相应的指标值;K19又会根据K18的指标值,查找返回相应的颜色代码),然后宏把颜色代码作为名称所指向的单元格的填充样式复制到当前区域的图形进行填充。
5、点击按钮,当宏循环完成,每个区域的图形就被根据其数值大小,填充了相应的颜色。
我们将I8:J12拍照引用到地图左下角,作为图例。为方便复制引用,我们再将地图所在的AO10:AT30拍照引用到Q10处,要导出地图时,只需要复制这个拍照对象就可以了。
模型的使用
至此,一个层析填色型的热力地图工具就完成了。需要使用的时候,我们只需要3个步骤:
●&&&&&&&&&&填入你的数据;
●&&&&&&&&&&设置分档阀值和填充图例;
●&&&&&&&&&&按下填色按钮,生成热力地图。
是不是非常惬意?呵呵,我们也可以象咨询顾问一样制作数据地图了,穷人的地图可一点也不差哟。
有的朋友可能希望在地图上增加区域名、指标值,可以通过在各省图形上添加文字,或绘制文本框,然后将其链接到相应的单元格。但一般建议不必添加,地图上少放些内容,会显得更加清晰。另外,如需增加分档层级,可根据以上过程,自行修改相应参数来扩展层级。
以上说明仍使用之前日志《&》中的例子文件,请至该日志下载参考。
& (本文由原创,转载请注明出处。探索最专业的商务图表沟通之道,用Excel制作杂志级的商业图表,让普通人士也能极具专业精神。欢迎交流讨论!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。使用R语言绘制中国地图 - 推酷
使用R语言绘制中国地图
R3.1.1 Windows8.1
需要安装的packages: maptools,gp
绘图所需要的数据
中国地图的GIS数据 (可以此下面的网址下载)
http://cos.name/wp-content/uploads/2009/07/chinaprovinceborderdata_tar_gz.zip
是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf、bou2_4p.shp和bou2_4p.shx)
&&&& 中国各省会城市的经纬度数据
城市,Jd,Wd
北 京,116..9
上 海,121..
天 津,117..15
重 庆,106..
哈尔滨,126..75
长 春,125..
沈 阳,123.4,41.
呼和浩特,111.8,40.
石家庄,114..
太 原,112..
济 南,117,36.
郑 州,113.7,34.8
西 安,108.9,34.
兰 州,103..05
银 川,106..
西 宁,101.75,36.
乌鲁木齐,87.6,43.8
合 肥,117.3,31.85
南 京,118..
杭 州,120.15,30.
长 沙,113,28.
南 昌,115..
武 汉,114.35,30.
成 都,104..65
贵 阳,106.7,26.
福 州,119.3,26.
台 北,121..05
广 州,113.25,23.
海 口,110..
南 宁,108..8
昆 明,102.
拉 萨,91..
香 港,114..3
澳门,113.5,22.2
#设置当前工作目录
setwd(&E:/R语言学习/&)
#加载packages
library(sp)
library(maptools)
#读取省会城市经纬度数据
data &- read.csv(&citylonlat.csv&,header=TRUE,sep=&,&)
#读取各省的边界数据等
border &- readShapePoly(&package/china-province-border-data/bou2_4p.shp&)
#设置输出文件
#jpeg(&chinamap.jpeg&)
plot(border,col=rainbow(925),ylim = c(18, 54), panel.first = grid());
#增加省会城市坐标点
points(data$Jd, data$Wd, pch = 19, col = rgb(0, 0, 0, 0.5))
text(data$Jd, data$Wd, data[,1], cex = 0.6, col = rgb(0,
0, 0, 0.7), pos = c(2, 4, 4, 4, 3, 4, 2, 3, 4, 2, 4, 2, 2,
4, 3, 2, 1, 3, 1, 1, 2, 3, 2, 2, 1, 2, 4, 3, 1, 2, 2, 4, 4, 2))
#增加标签的另一种方式
#pointLabel(data$Jd, data$Wd, data[,1], offset = 0, cex = .6)
#设置坐标轴
axis(1, lwd = 0); axis(2, lwd = 0); axis(3, lwd = 0); axis(4, lwd = 0)
#输出结果到文件
#dev.off()
绘制的中国地图
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致您所在的位置: &
R绘制中国地图,并展示流行病学数据(1)
R绘制中国地图,并展示流行病学数据(1)
流行病学的数据讲究“三间分布”,即人群分布、时间分布和空间分布。其中的“空间分布”最好是在地图上展示,才比较清楚。R软件集统计分析与高级绘图于大成,是最适合做这项工作了。关于地图的绘制过程,谢益辉、邱怡轩和陈丽云等人都早有文章讲述,开R地图中文教程之先河。
本文作者:姜晓东,博士毕业于上海交通大学,目前任教于湖南师范大学医学院,专业神经毒理学。
流行病学的数据讲究&三间分布&,即人群分布、时间分布和空间分布。其中的&空间分布&最好是在地图上展示,才比较清楚。R软件集统计分析与高级绘图于大成,是最适合做这项工作了。关于地图的绘制过程,谢益辉、邱怡轩和陈丽云等人都早有文章讲述,开R地图中文教程之先河。由于目前指导毕业论文用到,因此研究了一下。本来因为网上教程很多,曾打消了写些文字的计划,但怡轩版主鼓励说&教程者众,整合者鲜&,所以才战胜拖延症,提起拙笔综述整合一下,并对DIY统计GIS地图提出了一点自己的想法。
1 地图GIS数据的来源与R绘制软件包
中国地图GIS数据的官方数据可以在国家基础地理信息中心的网站()里面可以免费下载。官方公开的数据包括:地图数据,及居住地、交通、河流等辅助数据。今年6月开始,官方正组织开始制作新版数据。老数据暂时无法下载,读者要自行百度搜索,本文以旧版数据为例。旧版地图数据中部分地名和地市区划已经过时,使用时需注意。
地图数据有4个压缩文件:bou1_4m.zip、bou2_4m.zip、bou3_4m.zip和bou4_4m.zip。bou代表边界的意思,数字1~4代表国家、省、市、县的4级行政划分;4m代表比例是400万分之一,这个比例的图形是公开的。每个文件解压缩后含有两类文件:以字母p结尾的表示多边形数据,用来绘制区域;以字母l结尾的文件是线形数据,用来绘制边界。但是老版数据中,市级数据中缺少绘制区域的多边形数据,让市级分布图的绘制稍麻烦一些,新版中也许会有改进。
用R绘制地图比较简单。比如画一下全国范围的区域,可以用如下代码:
library(maptools)
mydat = readShapePoly(&maps/bou1/bou1_4p.shp&)
plot(mydat)
但是,可以看出这样绘制的地图的形状有些扁平。这是因为,在绘图的过程中,默认把经度和纬度作为普通数据,均匀平等对待,绘制在笛卡尔坐标系上造成的。其实,地球的球面图形如何映射到平面图上,在地理学上是有一系列不同的专业算法的。地图不应该画在普通的笛卡尔坐标系上,而是要画在地理学专业的坐标系上。在这一点上,R的ggplot2包提供了专门的coord_map()函数。所以推荐R的ggplot2包来绘制地图。
library(ggplot2)
mymap = ggplot(data = fortify(mydat)) +
& & geom_polygon(aes(x = long, y = lat, group = id), colour = &black&,
& & & & & & & & &fill = NA) +
& & theme_grey()
print(mymap + coord_map())
这次中国地图的形状与百度地图一样了。
ggplot2包的coord_map函数默认的映射类型是mercator。如果有其他需要,可以使用其他的映射类型来绘制地图,如:
mymap + coord_map(projection = &azequidistant&)
coord_map函数的映射类型及其含义可以通过下列代码查询帮助,一般我们用默认的就可以。
library(mapproj)
?mapproject
2 GIS地图的数据结构及省市地图的绘制
GIS地图有很多种存储格式,其中shapefile格式(.shp)可以通过R的maptools包打开。其他格式可以去R官网查询相应的软件包。
地图数据基本可以分为点、线、面三种数据,在maptools包内分别有对应的函数来读取(readShapePoints、readShapeLines和readShapePoly函数)。首先以面(poly)型数据介绍。先看代码,通过readShapePoly函数读入省级地图:
library(maptools)
mydat = readShapePoly(&maps/bou2/bou2_4p.shp&)
此时,mydat中保存的是各个省/直辖市的多边形面图,数据类型是SpatialPolygonsDataFrame。我们可以:
length(mydat)
## [1] 925
names(mydat)
## [1] &AREA& &PERIMETER& &BOU2_4M_& &BOU2_4M_ID& &ADCODE93&
## [6] &ADCODE99& &NAME&
可以发现mydat中有925条记录,每条记录中含有面积(AREA)、周长(PERIMETER)、各种编号、中文名(NAME)等字段。其中中文名(NAME)字段是以GBK编码的。
这个SpatialPolygonsDataFrame类型并不是真正的data.frame类型,而是一个sp包定义的类,只不过重载了 [] 和 $ 运算符,使得一些行为上与data.frame相类似。
可以进一步统计一下,每个省/直辖市的多边形数目。
table(iconv(mydat$NAME, from = &GBK&))
内蒙古自治区
宁夏回族自治区
广西壮族自治区 新疆维吾尔自治区
西藏自治区
香港特别行政区
我的环境是UTF-8,所以需要iconv函数转化一下才能正常显示。
结果显示多数省的地图都是由一个多边形构成,少数临海省/直辖市由于有很多附属岛屿,多边形数目比较多。
利用与data.frame相似的 [] 和 $ 运算符操作,我们可以迅速提取出一个省市的数据,比如上海及附属崇明岛:
Shanghai = mydat[mydat$ADCODE99 == 310000,]
plot(Shanghai)
其中ADCODE99是国家基础地理信息中心定义的区域代码,共有6位数字,由省、地市、县各两位代码组成。
为了进一步在ggplot2包中绘图,需要把SpatialPolygonsDataFrame数据类型转化为真正的data.frame类型才可以。ggplot2包专门针对地理数据提供了特化版本的fortify函数来做这个工作:
head(fortify(Shanghai))
hole piece group
## 1 121.3 31.85
1 208.1 208
## 2 121.3 31.85
1 208.1 208
## 3 121.3 31.85
1 208.1 208
## 4 121.3 31.85
1 208.1 208
## 5 121.3 31.84
1 208.1 208
## 6 121.4 31.83
1 208.1 208
内容导航&第 1 页: &第 2 页: &第 3 页:
关于&&的更多文章
R语言是大数据分析和挖掘重要的工具,R是用于统计分析、绘图的语
讲师: 5人学习过讲师: 39人学习过讲师: 14人学习过
《待字闺中:编程面试题集》集合最新最全的面试经验和
这周Windows8.1正式版发布了,不知道各位有没有去更新
十一长假归来上班,好像更累了;早上也越来越堵了。小
《网管员必读―服务器与数据存储》全面、系统地介绍了在中、高级网络管理和网络工程实施中两个重要方面的主流技术和应用:硬件服
51CTO旗下网站}

我要回帖

更多关于 r语言 图例位置 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信