R语言与医学统计图形-【29】地图的绘制
R绘制地图原理:
R使用一个个多边形(polygon)来表示每个区域,通过顺次连接GIS数据提供的每个区域多边形的坐标来逐点绘制这些多边形,所以理论上只要得到GIS数据就可绘制相应的地图。
地图绘制说明:
- 必须使用完整的中国地图(包含台湾及南海九段线);
- R中大部分包对于中国地图支持不佳,论文发表中需手动添加清楚明确的南海九段线。
1.maps包
R中内置地图包。但是这个包中的中国地图缺乏台湾、西沙、南沙群岛,所以不要拿来做中国地图。
library(maps)
map('usa')
map('usa',regions = "Massachusetts")
map('state',interior = F)
map('state',boundary = F,lty=2,add = T)
map('state',fill=T,col = rainbow(200))
map('county','washington, san',names=T,plot = F)
map('state',xlim = range(ozone$x),ylim = range(ozone$y))
#经纬度范围
text(ozone$x,ozone$y,ozone$median)
box()
#标记每个区域失业率
data(unemp)
data(county.fips)
colors=c("#F1EEF6",'#D4B9DA','#C994C7','#DF65B0','#DD1C77','#980043')
unemp$colorBuckets <- as.numeric(cut(unemp$unemp,c(0,2,4,6,8,10,100)))
leg.txt <- c('<2%','2-4%','6-8%','8-10%','>10%')
colorsamtched <- unemp$colorBuckets[match(county.fips$fips,unemp$fips)]
map('county',col=colors[colorsamtched],fill=T,resolution = 0,lty=0)
#调用projection映射到专业地图坐标系
map('county',col=colors[colorsamtched],fill=T,resolution = 0,lty=0,
projection = 'polyconic')
#添加图例
leg.txt <- c('<2%','2-4%','6-8%','8-10%','>10%')
legend('topright',leg.txt,horiz = F,fill = colors)
title('2009年美国各市失业情况')
2. 从本地导入GIS地图
mapdata包和maptools包导入GIS地图数据。
library(mapdata)
library(maps)
map('china')
虽然这个包的中国地图版图完整,但提供的GIS信息比较旧,如重庆和四川没分开等。
maptools包可读入shapefile格式数据(最常见的地图文件格式)。
中国地图GIS数据可从GADM数据库下载(https://gadm.org/download_country_v3.html)如下图,选择shapefile或R格式:
或从国家基础地理信息中心(http://www.ngcc.cn/ngcc/
)下载shapefile文件(但我没找到)。
library(sp)
#sp包提供了处理空间数据的类和方法
library(maptools)
library(plyr)
library(ggplot2)
#读入地图数据
china.map <- readShapePoly('*.shp')
class(china.map)
plot(china.map) #仍在笛卡尔坐标系(扁平)
ggplot(china.map,aes(x=long,y=lat,group=group))+
geom_polygon(fill='grey')+
coord_map('polyconic') #投影到专业地图坐标系
3. 利用ggplot2绘制地图
准备地图信息。
#将地图数据转换为数据框(经纬度数据)
china.map1 <- fortify(china.map)
#提取行政区域信息
mymap <- china.map@data #@针对S4对象,类似$(S3对象)
#生成id用于匹配
mymap$id <- c(0:924)
#按id列匹配
china.map2 <- plyr::join(mymap,china.map1)
导入业务数据和绘制地图:
如中国各省份公共卫生机构分布数据以及某疾病发病率。
geom_polygon(color='grey')+scale_fill_gradient(low = 'pink',
high = 'red')+
coord_map('ployconic')
p
#给各省份添加标签,仍需获取省份的经纬度
#可通过geocode/getCoordinate从地图软件中获取
p+geom_text(aes(label=Group.1),size=3,data=province_data)+
#去掉灰色网格背景和不必要的经纬度信息
theme(panel.grid = element_blank(),
panel.background = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
axis.title = element_blank())
还可在地图上添加气泡图、饼图等。
除了绘制中国和世界地图,可从shape文件中获取市级地图GIS数据。
anhui <- subset(china.map2,NAME=="安徽省")
ggplot(anhui,aes(x=long,y=lat,group=group,fill=NAME))+
geom_polygon(color='skyblue',fill='skyblue')
要获取安徽省各个行政区的资料信息,可从GADM数据库中下载包含市级行政区的shapefile文件。
4. 从专业地图软件调用地图
R可调用谷歌、百度等地图数据,但每日API获取次数有限。
一般流程是:
- 获取经纬度
- 根据经纬度获得相应地图
- 按需处理数据和地图对象
ggmap包
R语言与医学统计图形-【29】地图的绘制的更多相关文章
- R语言与医学统计图形-【34】绘制统计表格
表的绘制,主要是临床三线表. 1.tableone包 #install.packages('tableone') library(tableone) set.seed(2017) age <- ...
- R语言与医学统计图形【1】par函数
张铁军,陈兴栋等 著 R语言基础绘图系统 基础绘图包之高级绘图函数--par函数 基础绘图包并非指单独某个包,而是由几个R包联合起来的一个联盟,比如graphics.grDevices等. 掌握par ...
- R语言与医学统计图形【6】低级绘图函数
R语言基础绘图系统 基础绘图包之低级绘图函数--定义坐标轴.图例.文本 低级绘图函数:本身不具备图形绘制能力,只是在已有图形基础上添加元素. 函数 功能 arrows 添加箭头 axis 坐标轴 bo ...
- R语言与医学统计图形【5】饼图、条件图
R语言基础绘图系统 基础图形--饼图.克利夫兰点图.条件图 6.饼图 pie(rep(1,26),col=rainbow(26), labels = LETTERS[1:26], #标签 radius ...
- R语言与医学统计图形【4】直方图、金字塔图
R语言基础绘图系统 基础图形--直方图.金字塔图 3.直方图 参数设置及比较. op <- par(mfrow=c(2,3)) data <- rnorm(100,10,5) hist(d ...
- R语言与医学统计图形【3】条形图、误差图
R语言基础绘图系统 基础图形--条形图.误差图 3.条形图 barplot接收的数据是矩阵而非数据框. data <- sample(c(50:80),5) barplot(data,col=h ...
- R语言与医学统计图形【2】散点图、盒形图
R语言基础绘图系统 基础图形--散点图.盒形图 plot是一个泛型函数(generic method),对于不同的数据绘制不同的图形. par函数的大部分参数在plot中通用. 1.散点图 plot绘 ...
- R语言与医学统计图形【8】颜色的选取
R语言基础绘图系统 基础绘图包之低级绘图函数--内置颜色. 1.内置颜色选取 功能657种内置颜色.colors() 调色板函数:palette(), rgb(), rainbow(). palett ...
- R语言与医学统计图形【7】低级绘图函数
R语言基础绘图系统 基础绘图包之低级绘图函数--气泡图.一页多图.背景网格.添加线条和散点.数学表达式 4.气泡图 symbols是高级绘图函数,可在图上添加标记,标记的形状包括:circles,sq ...
随机推荐
- SpringCloud微服务实战——搭建企业级开发框架(七):自定义通用响应消息及统一异常处理
平时开发过程中,无可避免我们需要处理各类异常,所以这里我们在公共模块中自定义统一异常,Spring Boot 提供 @RestControllerAdvice 注解统一异常处理,我们在GitEgg ...
- 攻防世界 杂项 9.a_good_idea
题目描述: 汤姆有个好主意 解题思路: 首先按照隐写思路找了一下没找到flag,接着使用winhex打开图片,发现图片里面又包含了一张图片,然后马上改了一下后缀为zip, 解压后发现里面有:hint. ...
- VCS常用仿真选项开关及步骤总结
转自:https://blog.csdn.net/bcs_01/article/details/79803304 转自:https://blog.csdn.net/wonder_coole/artic ...
- 正则表达式匹配 牛客网 剑指Offer
正则表达式匹配 牛客网 剑指Offer 题目描述 请实现一个函数用来匹配包括'.'和''的正则表达式.模式中的字符'.'表示任意一个字符,而''表示它前面的字符可以出现任意次(包含0次). 在本题中, ...
- 理解ASP.NET Core - 文件服务器(File Server)
注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 提供静态文件 静态文件默认存放在 Web根目录(Web Root) 中,路径为 项目根目录(C ...
- Jetbrains 系 IDE 编辑器的代码提示功能
著名的 Jetbrains 可谓编程界的一大福音,众多有名代码编辑器比如 ItelliJ IDEA.PHPStorm.WebStorm.PyCharm 等,均出自这家公司麾下. 对于中国的Java开发 ...
- Spring源码学习之容器的基本实现(一)
前言 最近学习了<<Spring源码深度解析>>受益匪浅,本博客是对学习内容的一个总结.分享,方便日后自己复习或与一同学习的小伙伴一起探讨之用. 建议与源码配合使用,效果更嘉, ...
- 17.彻底解决Jmap在mac版本无法使用的问题
彻底解决Jmap在mac版本无法使用的问题 看了网上很多帖子,都说一半,说的都是大家说过的,根本没有解决问题.说jdk8不行,换成jdk9或者jdk11,我都试了,还是不行,最后说是mac的问题.换成 ...
- git删除未被追踪的文件
# 先看看会删掉哪些文件,防止重要文件被误删 git clean -n # 删除 untracked files git clean -f # 连 untracked 的目录也一起删掉 git cle ...
- SpringCloud升级之路2020.0.x版-32. 改进负载均衡算法
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 在前面一节,我们梳理了实现 Feign 断路器以及线程隔离的思路,这一节,我们先不看如何源 ...