对,你没看错,真的有这种操作~
作者:杜雨,EasyCharts团队成员,R语言中文社区专栏作者,兴趣方向为:Excel商务图表,R语言数据可视化,地理信息数据可视化。
个人公众号:数据小魔方(微信ID:datamofang) ,“数据小魔方”创始人。
友情提醒:今晚8点半杜雨教你如何搞定矢量图形编辑,让你的报告美出新高度!点击阅读全文可以报名或者加微信:tswenqu,拉你到杜雨老师为微信群,跟杜老师一起互动。免费哦
之前的ggplot2入门实践篇已经更新告一段落,也已经做了归总分类分享给大家。
最近翻看突然发现少了一个知识点,就是分面中没有讲填充多边形分面的应用,虽然其理念跟其他的常用图表类型一致。
但是鉴于多边形填充本身就比较复杂,再加上分面肯定能把大部分小伙伴儿绕晕,这里还是亲自实践一篇案例详细讲解一下实际用法。
如果你还不懂如何使用ggplot2制作数据地图的话,你可以参考以下序列文件:
地图部分(ggplot2)
为了演示方便,今天这篇使用纯模拟数据:
加载包:
library("ggplot2")
library("plyr")
library("ggthemes")
library("rgdal")
library("dplyr")
导入中国省界地图:
setwd("D:/R/rstudy/CHN_adm")
china_map<-readOGR("bou2_4p.shp",stringsAsFactors=FALSE)
mydata<-china_map@data["NAME"]
mydata$id<-0:924;mydata[mydata$id==898,"NAME"]<-"澳门特别行政区"
mymapdata<-fortify(china_map)
mymapdata$id<-as.numeric(mymapdata$id)
mymapdata<-merge(mymapdata,mydata,all.x=TRUE)
mymapdata<- mymapdata %>%rename(region=NAME)
今天的目标是,使用一个省份12年份实践序列数据分别呈现填色散点气泡图、颜色填充图、以及组合图,形成3*4排列的数据地图分面,不是使用grid逐个打印单个地图,而是直接使用ggplot2的分面参数进行绘制。
考虑到如果使用传统的数据源格式(geom_polygeon制作填充图要求将指标数据与地理分界点数据合并,因为地理分界点数据有9万个,12个年份数据表宽转长之后会暴增到120万+,肯定会拖慢内存,所以今天使用geom_map函数进行颜色填充地图的绘制)。
以下是本案例步骤:
首先构造12个年份变量:
mydata_new<-data.frame(NAME=unique(mydata$NAME))
for (i in 2:13){
mydata_new[,i]<-round(runif(34,0,250))
}
定义并切割连续型数据为因子变量
names(mydata_new)[2:length(mydata_new)]<-as.character(2001:2012)
mydata_new<-mydata_new%>%tidyr::gather(year,zhibiao,-1)
mydata_new$fact<-cut(mydata_new$zhibiao,breaks=c(0,50,100,150,200,250),labels=c('0~50','50~100','100~150','150~200','200~250'),order=TRUE,include.lowest = TRUE)
以下是构图过程:
分面地图一(热力填色地图):
ggplot(mydata_new,aes(map_id=NAME,fill=fact))+
geom_map(map=mymapdata,colour="grey65")+
scale_fill_brewer(palette="Blues") + ###Blues&Greens
facet_wrap(~year)+
expand_limits(x=mymapdata$long,y=mymapdata$lat)+
coord_map("polyconic")+
guides(fill=guide_legend(reverse=TRUE,title=NULL))+
theme_void()%+replace% theme(legend.position = c(0,0.7),legend.text.align=1)
导入并合并省份行政中心经纬度数据
province_city <- read.csv("D:/R/rstudy/Province/chinaprovincecity.csv")
province_city<-province_city%>%select(province,jd,wd)
mydata_new<-merge(mydata_new,province_city,by.x="NAME",by.y="province",all.x=TRUE)
分面地图二(填色气泡地图):
ggplot(mydata_new,aes(map_id=NAME))+
geom_map(map=mymapdata,colour="grey65",fill="#EEF3FA")+
geom_point(aes(x=jd,y=wd,size=zhibiao,colour=zhibiao),shape=16)+
scale_size_area(max_size=6) +
scale_colour_gradient(low="white",high="#D73434")+
facet_wrap(~year)+
expand_limits(x=mymapdata$long,y=mymapdata$lat)+
coord_map("polyconic")+
guides(fill=guide_legend(reverse=TRUE,title=NULL),size=guide_legend(reverse=TRUE,title=NULL))+
theme_void()%+replace% theme(legend.position = c(0,0.7),legend.text.align=1)
分面地图三(填色气泡+热力填充地图):
ggplot(mydata_new,aes(map_id=NAME))+
geom_map(map=mymapdata,aes(fill=fact),colour="white")+
geom_point(aes(x=jd,y=wd,size=zhibiao,colour=zhibiao),shape=16)+
scale_size_area(max_size=4) +
scale_fill_brewer(palette="Greens") + ###Blues&Greens
scale_colour_gradient(low="white",high="#D73434")+
facet_wrap(~year)+
expand_limits(x=mymapdata$long,y=mymapdata$lat)+
coord_map("polyconic")+
guides(fill=guide_legend(reverse=TRUE,title=NULL),size=guide_legend(reverse=TRUE,title=NULL))+
theme_void()%+replace% theme(legend.position = c(0,0.7),legend.text.align=1)
对你没有看错,ggplot2就是这么高端大气上档次,想不想学这种操作呀,9月12日晚八点,天善学院我们不见不散(悄悄地告诉你报名地址在阅读原文里)~_~
所需数据源请移步之本人GitHub下载,可以直接进入GitHub官网搜索ljtyduyu,也可以在后台回复任意内容,获取小魔方的GitHub主页数据获取地址。
更多精彩内容请戳
搞定矢量图形编辑,让你的报告美出新高度!
1、矢量图形获取与转换
2、矢量图形编辑与改造
3、如何在Excel,PPT中操控矢量图
4、矢量图形与数据分析地图案例应用
5、图形高精度输出与版面控制
点击阅读原文立即报名