专栏名称: EasyCharts
EasyCharts,易图表,我们将定期推送各种数据可视化与分析教程,包括Excel(Power BI)、Origin、Sigmaplot、GraphPad、R、Python、Matlab、Tableau、D3.js等。
目录
相关文章推荐
前端大全  ·  Chrome Extension 开发解析 ·  1 周前  
前端早读课  ·  【早阅】深入理解 TypeScript ... ·  4 天前  
前端早读课  ·  【早阅】滚动页面布局形式的探索 ·  5 天前  
前端早读课  ·  【第3397期】客服工作台的实践总结 ·  5 天前  
前端早读课  ·  【第3396期】Monaco Editor ... ·  6 天前  
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")

  )

是时候展现真正的技术了——动态人口结构金字塔变化图(R语言+Excel)

我的图表我做主——超强脑洞圆环条形图

用ggplot2制作静态数据可视化报告!

ggplot制作分析仪表盘


如需转载请联系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种以上不同的图表风格演示,供读者选择与学习,可以满足不同人群的审美需求。