R语言中国地图绘制进

浏览: 2238

前言

我是张杰,不会唱歌的张杰!

R语言之前学过几天,那是将近一两年前的事情。最近发现要绘制地图系列图表,发现还是R语言比较方便,虽然我之前也使用过Matlab绘制中国地图系列,还拿着Matlab绘制的中国地图系列进入去年七月的阿里巴巴数据可视化大赛。

很感谢我的队友小魔方-杜雨,他总结了不少资料。我绘制的这些图表就是在小魔方代码的基础上,学习再调整、添加的。我这几天也重新看了R语言的书籍,打算也好好研究一下R语言数据可视化。下面这些是我的拙作,还望诸位不吝赐教!

另外,今天也是五四青年节,祝各位青年朋友们节日快乐!



注释:中国包括台湾、香港、澳门和南沙群岛等地区,为保证展示效果,所以只展示了中国的主体部分。

Clipboard Image.png

library(maptools)

library(ggplot2)

library(plyr)

setwd("C:/Users/JieZhang/Desktop/China_AreaScatter/") #确定文件路径

china_map <-readShapePoly("bou2_4p.shp")  # 读取地图空间数据

china_map <- fortify(china_map)            #转化为数据框

china_data<-read.csv("chinaprovincecity.csv")       #读取省会城市坐标

 

ggplot()+

 geom_polygon(data=china_map, aes(x=long, y=lat, group=group),fill="grey95", colour="grey60",size=0.25)+ #中国地图

 geom_point(data=china_data, aes(x = jd,y = wd),size=4,fill="black", alpha=1,shape=21, colour="white")+  #散点图

 coord_map("polyconic") +

  theme_nothing()#图表元素设定


Clipboard Image.png

library(ggplot2)

library(ggmap)

library(plyr)

library(maptools)

 

setwd("C:/Users/JieZhang/Desktop/China_AreaScatter/")

china_map0<-readShapePoly("bou2_4p.shp")

x <- china_map0@data  #S4的意思是指S语言的版本4.

#默认情况下,`$`可以用于获取dataframe或者list里面的某个变量;

#对于 S4 object,`@` 可以提取出内容(slot)

xs <- data.frame(id=row.names(x),x)

 

china_map<- fortify(china_map0)

china_map_data <- join(china_map, xs, type ="full")

mydata <-read.csv("geshengzhibiao.csv")

china_data <- join(china_map_data, mydata,type="full")

 

province_city <-read.csv("chinaprovincecity.csv")

newdataA<-subset(province_city,city=="北京")

newdataB<-subset(province_city,city!="北京")

N<-nrow(newdataB)

province_city<-province_city[1:N+1,]

soux<-rep(newdataA$jd,N)

souy<-rep(newdataA$wd,N)

tagx<-newdataB$jd[1:N]

tagy<-newdataB$wd[1:N]

dataD<-data.frame(soux,souy,tagx,tagy)

dataE<-newdataB[1:N,1:2]

dataF<-cbind(dataD,dataE)

 

ggplot()+

 geom_polygon(data=china_data,aes(x=long,y=lat,group=group),fill="grey95",colour="grey60",size=0.25)+

 geom_point(data =province_city,aes(x=jd,y=wd),size=4,shape=21, fill="white")+

 geom_segment(data=dataF,aes(x=soux,y=souy,xend=tagx,yend=tagy,colour="black"),colour="black")+

 coord_map("polyconic") +

 theme_nothing()


Clipboard Image.png

library(maptools)

library(ggplot2)

library(plyr)

library("scatterpie")

 

setwd("C:/Users/JieZhang/Desktop/China_AreaScatter/")

 

china_map <-readShapePoly("bou2_4p.shp")            # 读取地图空间数据

china_map1 <- fortify(china_map)                               #转化为数据框

 

mydata <-read.csv("geshengzhibiao.csv")             #读取业务数据

province_city <-read.csv("chinaprovincecity.csv")  #读取省会城市坐标

china_data <- join(province_city, mydata,type="full")        #合并两个数据框

jd<-china_data$jd

wd<-china_data$wd

 

N<-nrow(china_data)

Dmin<-10

Dmax<-50

P1<-round(runif(N,Dmin,Dmax))

P2<-round(runif(N,Dmin,Dmax))

mynewdata<-data.frame(jd=china_data$jd,wd=china_data$wd,P1=round(runif(N,10,50)),P2=round(runif(N,10,50)))

 

color<-c("black","gray100")

 

ggplot()+

 geom_polygon(data=china_map1, aes(x=long, y=lat, group=group),fill="grey95", colour="grey60",size=0.25)+ #

 geom_scatterpie(aes(x=jd,y=wd,r=1),data=mynewdata,cols=colnames(mynewdata)[3:4],color="black")+

 coord_map("polyconic") +

 scale_fill_manual(values=color)+

  guides(fill=guide_legend(label.position ="top"))+

  theme(

   panel.grid = element_blank(),

   panel.background = element_blank(),

   axis.text = element_blank(),

   axis.ticks = element_blank(),

   axis.title = element_blank(),

   legend.direction="horizontal",

   legend.position=c(0.3,0.3),

   legend.box="horizontal",  

  legend.text.align=0  )


Clipboard Image.png

library(maptools)

library(ggplot2)

library(plyr)

setwd("C:/Users/Jie Zhang/Desktop/China_AreaScatter/")

china_map0 <-readShapePoly("bou2_4p.shp")            #读取地图空间数据

china_map <- fortify(china_map0)                     #转化为数据框

china_data<-read.csv("chinaprovincecity.csv")  #读取省会城市坐标

 

N<-nrow(china_data)

Dmin<-10

Dmax<-50

P1<-round(runif(N,Dmin,Dmax))

P2<-round(runif(N,Dmin,Dmax))

mynewdata<-cbind(china_data$jd,china_data$wd,P1,P2)

 

n<-round(N/3)

Shape0<-c(rep(1,n)*1,rep(1,n)*2,rep(1,N-n*2)*3)

Vmin<--3

Vmax<-3

vx<-round(runif(N,Vmin,Vmax))

vy<-round(runif(N,Vmin,Vmax))

#china_data<-data.frame(china_data,Shape0)

#china_data<-as.data.frame(china_data)

china_data<-cbind(china_data,Shape0,vx,vy)

china_data$Shape<-cut(china_data$Shape0,breaks=c(0,1.5,2.5,3.5),labels=c("Cluster1","Cluster2","Cluster3"),include.lowest=TRUE,order=TRUE)

 

ggplot()+

 geom_polygon(data=china_map, aes(x=long, y=lat, group=group),fill="grey95", colour="grey60",size=0.25)+ #中国地图

 geom_segment(data=china_data,aes(x = jd,y = wd,xend = jd+vx, yend =wd+vy), arrow = arrow(length = unit(0.2, "cm")), size = 0.5)+ #向量箭头

 geom_point(data=china_data, aes(x = jd,y = wd),size=2,fill="white", alpha=1, shape=21,colour="black")+ #散点图

 coord_map("polyconic") +

theme_nothing() #图表元素设定


Clipboard Image.png

library(maptools)

library(ggplot2)

library(plyr)

setwd("C:/Users/Jie Zhang/Desktop/China_AreaScatter/")

china_map <-readShapePoly("bou2_4p.shp")            # 读取地图空间数据

china_map1 <- fortify(china_map)                     #转化为数据框

mydata <-read.csv("geshengzhibiao.csv")             #读取业务数据

province_city <-read.csv("chinaprovincecity.csv")  #读取省会城市坐标

china_data <- join(province_city, mydata,type="full")        #合并两个数据框

 

ggplot()+

  geom_polygon(data=china_map1,aes(x=long, y=lat, group=group), fill="grey95",colour="grey60",size=0.25)+ #中国地图

 geom_point(data=china_data, aes(x = jd,y = wd,size=zhibiao),fill="black", alpha=1,shape=21, colour="white")+ #气泡图

 scale_size_area(max_size=8)+     

 coord_map("polyconic") +

  theme(

   panel.grid = element_blank(),

   panel.background = element_blank(),

   axis.text = element_blank(),

   axis.ticks = element_blank(),

   axis.title = element_blank(),

   legend.direction="vertical",

    legend.position=c(0.3,0.3),

   legend.box="vertical",

   legend.text.align=0

  )


Clipboard Image.png

library(maptools)

library(ggplot2)

library(plyr)

 

setwd("C:/Users/JieZhang/Desktop/China_AreaScatter/")

china_map <- readShapePoly("bou2_4p.shp")          # 读取地图空间数据

china_map1 <- fortify(china_map)                    #转化为数据框

mydata <-read.csv("geshengzhibiao.csv")             #读取业务数据

province_city <-read.csv("chinaprovincecity.csv")  #读取省会城市坐标

china_data <- join(province_city, mydata, by="province")#type="full")     #合并两个数据框

jd<-china_data$jd

wd<-china_data$wd

 

N<-nrow(china_data)

P1<-round(runif(N,10,50))

P2<-round(runif(N,10,50))

mynewdata<-cbind(jd=china_data$jd,wd=china_data$wd,P1=round(runif(N,10,50)),P2=round(runif(N,10,50)))

Shape0<-c(rep(1,12)*1,rep(1,12)*2,rep(1,N-24)*3)

china_data<-cbind(china_data,Shape0)

china_data$Shape<-cut(china_data$Shape0,breaks=c(0,1.5,2.5,3.5),labels=c("Cluster1","Cluster2","Cluster3"),include.lowest=TRUE,order=TRUE)

 

ggplot()+

 geom_polygon(data=china_map1, aes(x=long, y=lat, group=group),fill="grey95", colour="grey60",size=0.25)+ #中国地图

 geom_point(data=china_data, aes(x = jd,y = wd,shape=Shape),size=4,fill="white", alpha=1, colour="black")+ #多数据系列散点图

 scale_shape_manual(values=c(21,22,23))+

  coord_map("polyconic")+

  theme(

     panel.grid = element_blank(),

     plot.background=element_rect(fill="grey100",colour=NA),

     panel.background=element_rect(fill="grey100",colour=NA),

     axis.text = element_blank(),

     axis.ticks = element_blank(),

     axis.title = element_blank(),

     legend.direction="vertical",

     legend.position=c(0.3,0.3),

     legend.box="vertical",

     legend.text.align=0

    ) 


Clipboard Image.png

library(ggplot2)       #绘图函数

library(plyr)          #数据合并工具

library(maptools)      #地图素材导入

library(Cairo)         #图片高清导出

library(RColorBrewer)  #该保重存储着一些高质量的地图配色模板可以参考

library(scales)        #分割数据

 

setwd("C:/Users/JieZhang/Desktop/China_AreaScatter/")

  

china_map<-readShapePoly("bou2_4p.shp")

x <- china_map@data         

xs <- data.frame(id=row.names(x),x)

 

china_map0<- fortify(china_map)

china_map_data <- join(china_map0, xs, type ="full")

mydata <-read.csv("geshengzhibiao.csv")

china_data<-join(china_map_data,mydata,type="full")

 

#离散颜色标度分割:

qa <- quantile(na.omit(china_data$zhibiao),c(0,0.2,0.4,0.6,0.8,1.0))

china_data$zhibiao_q<-cut(china_data$zhibiao,qa,labels= c("0-20%","20-40%","40-60%","60-80%","80-100%"),include.lowest = TRUE)

 

province_city <-read.csv("chinaprovincecity.csv")

province_city$zhibao<-round(runif(34,50,100))

 

 

ggplot(china_data,aes(long,lat))+

 geom_polygon(aes(group=group,fill=zhibiao_q),colour="black",size=0.25)+

 scale_fill_brewer(palette="RdYlGn")+

 coord_map("polyconic") +

 guides(fill=guide_legend(reverse=TRUE,title=NULL))+

  theme(

   panel.grid = element_blank(),

   panel.background = element_blank(),

   axis.text = element_blank(),

   axis.ticks = element_blank(),

   axis.title = element_blank(),

   legend.position = c(0.3,0.25),

   legend.background = element_blank(),

    legend.text.align=1,

   legend.key.width=unit(1,"line"),

   legend.key.height=unit(1,"line")

  )




如需转载请联系EasyCharts团队!


送福利啦!

 长按文末二维码,关注EasyCharts公众号;

 加入QQ群,可以在群文件获取“Excel商业图表修炼秘笈之基础篇-大纲”

 加入QQ群,可以在群文件获取《Excel数据之美》试读样章与书籍配套的Excel源文件EasyCharts插件

在公众号中回复“买书”,即可收到购买链接哦!


我们EasyCharts团队在网易云课堂等你来上课哦,长按下面的二维码就可进入网易学习课堂。本课程定价为19.9


简介

真正的高手,不是会制作高难度的图表,而是能把最平常的图表绘制出商务范!小菜鸟,老司机,都不容错过本课程哦!

1. 这是Excel史上最全的基础图表类型讲解;本课程重点讲解了23个基础图表案例,包括Excel自动生成的柱形图,条形图,折线图,面积图,散点图,饼图,圆环图、雷达图,表格,卡片等常用商业图表。

2. 这是Excel史上最全的商业图表风格学习大全;本课程提供了5种商业图表风格的图表,包括《商业周刊》风格,《华尔街日报》风格1和2,《经济学人》风格1和2,共5种经典商业杂志图表的风格。

3. 本课程包括了150多张张商业图表演示Excel源文件。每个基础图表案例至少提供6种以上不同的图表风格演示,供读者选择与学习,可以满足不同人群的审美需求。

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

0 个评论

要回复文章请先登录注册