查看原文
其他

一篇全是代码的数据可视化案例

2017-06-06 杜雨 R语言中文社区

 作者:杜雨,EasyCharts团队成员,R语言中文社区专栏作者,兴趣方向为:Excel商务图表,R语言数据可视化,地理信息数据可视化。
个人公众号:数据小魔方(微信ID:datamofang) ,“数据小魔方”创始人。 

实在没时间写文字步骤了,算了,就甩一篇代码给大家吧,这篇代码包含五张图,分别可以呈现放射状线路图、迁徙路径图、闭环路径图、菱形气泡图、方形气泡图。


library("plyr")

library("dplyr")

library("ggplot2")

library("ggmap")

library("maptools")

library("maps")

library("REmap")

library("Cairo")

library("baidumap")

library(showtext)

中国地图


china_map<-readShapePoly("c:/rstudy/bou2_4p.shp")

x1 <- china_map@data          

xs1 <- data.frame(x1,id=seq(0:924)-1)  

china_map1 <- fortify(china_map) 

china_map_data <- join(china_map1, xs1, type = "full") 

mydata1 <- read.csv("c:/rstudy/geshengzhibiao.csv")

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


放射路径气泡图

city_list<-c("西安","西宁","郑州","重庆","成都","石家庄","兰州","济南","大同","咸阳","包头")

#address<-get_geo_position(city_list)

address<-getCoordinate(city_list, formatted = T)

address<-data.frame(address,city=row.names(address),stringsAsFactors = FALSE)

del<-getCoordinate("长沙", formatted = T)

del<-as.character(del)

lonx<-as.numeric(rep(del[1],11))

laty<-as.numeric(rep(del[2],11))


address<-data.frame(address,lonx,laty)

address$lonx<-as.numeric(address$lonx)

address$laty<-as.numeric(address$laty)


names(address)[1:2]<-c("lon","lat")

address$Num<-round(runif(11,50,100),2)

font.add("myfont", "msyhl.ttc")

CairoPNG(file="C:/Users/Administrator/Desktop/航线图1.png",width=1000,height=670)

showtext.begin()

ggplot()+

geom_polygon(data=china_data,aes(x=long,y=lat,group=group),fill="white",size=0.2,colour="#D9D9D9")+

geom_segment(data=address,aes(x=lon,y=lat,xend=lonx,yend=laty),size=0.3,colour="#FF6833")+

geom_point(data=address,aes(x=lon,y=lat,size=Num),shape=21,fill="#ED7D31",col="#E02939",alpha=.6)+

geom_point(data=NULL,aes(x=112.97935,y=28.21347),shape=21,size=8,fill=NA,col="steelblue")+

guides(fill=FALSE)+

coord_map("polyconic")+

scale_size_area(max_size=8)+ 

 theme(

 plot.background=element_rect(fill="#D0DEDE", color=NA),

 panel.spacing = unit(0,"lines"), 

 plot.margin=unit(rep(0.2,4),"cm"),

 panel.grid = element_blank(),

 panel.background = element_blank(),

 axis.text = element_blank(),

 axis.ticks = element_blank(),

 axis.title = element_blank(),

 #legend.position=c(0.8,0.3),

 legend.position="none"

 )

showtext.end()  

dev.off()



迁徙路径气泡图

city_list<-c("海口","广州","长沙","武汉","郑州","石家庄","北京","沈阳","长春","哈尔滨")

addA<-getCoordinate(city_list, formatted = T)

addA<-data.frame(addA,city=row.names(addA),stringsAsFactors = FALSE)

data1<-addA[-1,]

names(data1)[1:2]<-c("lonx","latx")

data2<-addA[-length(row.names(addA)),]

names(data2)[1:2]<-c("lony","laty")

addB<-cbind(data2,data1)[,-3]

addA$Num<-round(runif(10,50,100),2)

names(addA)[1:2]<-c("lon","lat")

font.add("myfont", "msyhl.ttc")

CairoPNG(file="C:/Users/Administrator/Desktop/航线图2.png",width=1000,height=670)

showtext.begin()

ggplot()+

geom_polygon(data=china_data,aes(x=long,y=lat,group=group),fill="white",size=0.2,colour="#D9D9D9")+

geom_segment(data=addB,aes(x=lonx,y=latx,xend=lony,yend=laty),size=0.3,colour="#FF6833")+

geom_point(data=addA,aes(x=lon,y=lat,size=Num),shape=21,fill="#ED7D31",col="#E02939",alpha=.6)+

guides(fill=FALSE)+

coord_map("polyconic")+

scale_size_area(max_size=8)+ 

     theme(

          plot.background=element_rect(fill="#D0DEDE", color=NA),

          panel.spacing = unit(0,"lines"), 

          plot.margin=unit(rep(0.2,4),"cm"),

          panel.grid = element_blank(),

          panel.background = element_blank(),

          axis.text = element_blank(),

          axis.ticks = element_blank(),

          axis.title = element_blank(),

          #legend.position=c(0.8,0.3),

          legend.position="none"

          )

showtext.end()  

dev.off()


闭环路径气泡图


city_list3<-c("兰州","成都","重庆","贵阳","昆明","南宁","海口","广州","福州","上海","青岛","石家庄","呼和浩特","银川")

addC<-getCoordinate(city_list3, formatted = T)

addC<-data.frame(addC,city=row.names(addC),stringsAsFactors = FALSE)

names(addC)[1:2]<-c("lon","lat")

datac1<-addC[2:14,]

datac2<-addC[1,]

addCC<-rbind(datac1,datac2)

adddata<-cbind(addC,addCC)

names(adddata)<-c("lonx","latx","city","lony","laty","city")

adddata<-adddata[,-3]

addC$Num<-round(runif(14,50,100),2)

CairoPNG(file="C:/Users/Administrator/Desktop/航线图3.png",width=1000,height=670)

showtext.begin()

ggplot()+

geom_polygon(data=china_data,aes(x=long,y=lat,group=group),fill="white",size=0.2,colour="#D9D9D9")+

geom_segment(data=adddata,aes(x=lonx,y=latx,xend=lony,yend=laty),size=0.3,colour="#FF6833")+

geom_point(data=addC,aes(x=lon,y=lat,size=Num),shape=21,fill="#ED7D31",col="#E02939",alpha=.6)+

guides(fill=FALSE)+

coord_map("polyconic")+

scale_size_area(max_size=8)+ 

theme(

plot.background=element_rect(fill="#D0DEDE", color=NA),

panel.spacing = unit(0,"lines"), 

plot.margin=unit(rep(0.2,4),"cm"),

panel.grid = element_blank(),

panel.background = element_blank(),

axis.text = element_blank(),

axis.ticks = element_blank(),

axis.title = element_blank(),

#legend.position=c(0.8,0.3),

legend.position="none"

)

showtext.end()  

dev.off()


方形气泡图

CairoPNG(file="C:/Users/Administrator/Desktop/航线图4.png",width=1000,height=670)

showtext.begin()

ggplot()+

geom_polygon(data=china_data,aes(x=long,y=lat,group=group),fill="white",size=0.2,colour="#D9D9D9")+

geom_point(data=address,aes(x=lon,y=lat,size=Num,fill=Num),shape=22,col="#E02939",alpha=.6)+

guides(fill=FALSE)+

scale_fill_gradient2(low="#8E0F2E", mid="#BFBEBE", high="#0E4E75", midpoint=median(na.omit(address$Num)))+

coord_map("polyconic")+

scale_size_area(max_size=8)+ 

theme(

plot.background=element_rect(fill="#D0DEDE", color=NA),

panel.spacing = unit(0,"lines"), 

plot.margin=unit(rep(0.2,4),"cm"),

panel.grid = element_blank(),

panel.background = element_blank(),

axis.text = element_blank(),

axis.ticks = element_blank(),

axis.title = element_blank(),

#legend.position=c(0.8,0.3),

legend.position="none"

          )

showtext.end()  

dev.off()


-菱形气泡图

CairoPNG(file="C:/Users/Administrator/Desktop/航线图5.png",width=1000,height=670)

showtext.begin()

ggplot()+

geom_polygon(data=china_data,aes(x=long,y=lat,group=group),fill="white",size=0.2,colour="#D9D9D9")+

geom_point(data=address,aes(x=lon,y=lat,size=Num,fill=Num),shape=23,col="#E02939",alpha=.6)+

guides(fill=FALSE)+

scale_fill_gradient2(low="#8E0F2E", mid="#BFBEBE", high="#0E4E75", midpoint=median(na.omit(address$Num)))+

coord_map("polyconic")+

scale_size_area(max_size=8)+ 

theme(

plot.background=element_rect(fill="#D0DEDE", color=NA),

panel.spacing = unit(0,"lines"), 

plot.margin=unit(rep(0.2,4),"cm"),

panel.grid = element_blank(),

panel.background = element_blank(),

axis.text = element_blank(),

axis.ticks = element_blank(),

axis.title = element_blank(),

#legend.position=c(0.8,0.3),

legend.position="none"

  )

showtext.end()  

dev.off()


以上所有图表的指标数据均为随机数虚构,图表的图形代码使用showtext和Cario进行高清渲染并自动输出,除了需加载的地图素材之外,其他代码均可一次性放在控制台流畅运行。

微信回复关键字即可学习

回复 R              R语言快速入门免费视频 
回复 统计          统计方法及其在R中的实现
回复 用户画像   民生银行客户画像搭建与应用 
回复 大数据      大数据系列免费视频教程
回复 可视化      利用R语言做数据可视化
回复 数据挖掘   数据挖掘算法原理解释与应用
回复 机器学习   R&Python机器学习入门 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存