专栏名称: EasyCharts
EasyCharts,易图表,我们将定期推送各种数据可视化与分析教程,包括Excel(Power BI)、Origin、Sigmaplot、GraphPad、R、Python、Matlab、Tableau、D3.js等。
目录
相关文章推荐
前端大全  ·  AI 正在培养一代 “文盲程序员” ·  2 天前  
前端大全  ·  Chrome 推出全新的 DOM ... ·  3 天前  
前端早读课  ·  【早阅】Figma MCP ... ·  2 天前  
龙视新闻联播  ·  龙江最美飘雪时|早春升温日 赏冰乐雪时 ·  3 天前  
宝山消防支队  ·  以案为例 |《油锅起火怎么办?》 ·  3 天前  
51好读  ›  专栏  ›  EasyCharts

R语言中国地图绘制进

EasyCharts  · 公众号  · 前端  · 2017-05-04 10:12

正文

前言

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

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

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

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

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


位置 + 地理坐标系

library(maptools)

library(ggplot2)

library(plyr)

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

china_map

china_map

china_data

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()#图表元素设定

位置 + 地理坐标

长度 + 地理坐标系

library(ggplot2)

library(ggmap)

library(plyr)

library(maptools)

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

china_map0

x

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

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

xs

china_map

china_map_data

mydata

china_data

province_city

newdataA

newdataB

N

province_city

soux

souy

tagx

tagy

dataD

dataE

dataF

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()

角度 + 地理坐标系

library(maptools)

library(ggplot2)

library(plyr)

library("scatterpie")

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

china_map

china_map1

mydata

province_city

china_data

jd

wd

N

Dmin

Dmax

P1

P2

mynewdata

color

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

)

方向 + 地理坐标系

library(maptools)

library(ggplot2)

library(plyr)

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

china_map0

china_map

china_data

N

Dmin

Dmax

P1

P2

mynewdata

n

Shape0

Vmin

Vmax

vx

vy

#china_data

#china_data

china_data

china_data$Shape

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() #图表元素设定

面积 + 地理坐标系

library(maptools)

library(ggplot2)

library(plyr)

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

china_map

china_map1

mydata

province_city

china_data

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

)

形状 + 地理坐标系

library(maptools)

library(ggplot2)

library(plyr)

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

china_map

china_map1

mydata

province_city

china_data

jd

wd

N

P1

P2

mynewdata

Shape0

china_data

china_data$Shape

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

)

颜色 + 地理坐标系

library(ggplot2)       #绘图函数

library(plyr)          #数据合并工具

library(maptools)      #地图素材导入

library(Cairo)         #图片高清导出

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

library(scales)        #分割数据

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

china_map

x

xs

china_map0

china_map_data

mydata

china_data

#离散颜色标度分割:

qa

china_data$zhibiao_q

province_city

province_city$zhibao

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")

)







请到「今天看啥」查看全文