# ggplot2高阶案例应用——中国家庭金融资产配置变化

1974年，一个典型公民把8%的金融资产放在现金和活期存款，35%放在定期存款，0.1%放在货币基金，3%放在共同基金，47%放在养老金。到2016年，这些数字演变为2.5%、22%，2.7%、31%和53%。

#原始数据：

mydata<-data.frame( Class=c("现金和活期存款","定期存款","货币基金","共同基金","养老基金"), Y1974=c(8,35,0.1,3,47), Y2016=c(2.5,22,2.7,31,53) )

mydata\$Class<-factor(mydata\$Class,levels=c("现金和活期存款","定期存款","货币基金","共同基金","养老基金"),ordered=T)

geom_rect()的规则是根据每一个多边形的边界点进行形状构建，所有我们需要获取15个矩形块中不重复的24个坐标点。

bar1<-data.frame( Class=c("现金和活期存款","定期存款","货币基金","共同基金","养老基金"), xmin=rep(0,5), xmax=rep(5,5), ymin=c(0,cumsum(mydata\$Y1974)[1:4]), ymax=cumsum(mydata\$Y1974), Year="Y1974", ) bar2<-data.frame( Class=c("现金和活期存款","定期存款","货币基金","共同基金","养老基金"), xmin=rep(25,5), xmax=rep(30,5), ymin=c(0,cumsum(mydata\$Y2016)[1:4]), ymax=cumsum(mydata\$Y2016), Year="Y2016" )

mydata1<-rbind(bar1,bar2) mydata1\$Class<-factor(mydata1\$Class,levels=c("现金和活期存款","定期存款","货币基金","共同基金","养老基金"),ordered=T)

mydata1\$label_x=rep(c(2.5,27.5),each=5) mydata1\$label_y=mydata1\$ymin+(mydata1\$ymax-mydata1\$ymin)/2 mydata1\$value<-c(mydata\$Y1974,mydata\$Y2016)

midrect<-data.frame(Class=mydata\$Class)

midrect\$id<-1:nrow(midrect)

midrect\$ystart<-c(0,cumsum(mydata\$Y2016[1:(nrow(mydata)-1)]))

midrect\$yend<-cumsum(mydata\$Y2016)

midrect\$start<-bar1\$ymin

midrect\$end<-bar1\$ymax

midrect_data<-data.frame(t(midrect[,c("start","end","yend","ystart")]),stringsAsFactors=FALSE) names(midrect_data)<-midrect\$Class midrect_data\$order<-1:4

midrect_data_final<-gather(midrect_data,Class,lat,-order) midrect_data_final\$long<-rep(c(5,5,25,25),5) midrect_data_final\$Class<-factor(midrect_data_final\$Class,levels=c("现金和活期存款","定期存款","货币基金","共同基金","养老基金"),ordered=T)

#绘图过程：

color<-c("#0579AD","#0899DA","#519F46","#A2D293","#C7C8CC") CairoPNG(file="E:/微信公众号/公众号——数据小魔方/2017年9月/20170922/bump_bar.png",width=1200,height=900) showtext.begin() ggplot()+ geom_rect(data=mydata1,aes(xmin=xmin,xmax=xmax,ymin=ymin,ymax=ymax,fill=Class),colour="white")+ geom_text(data=mydata1,aes(x=label_x,y=label_y,label=paste(value,"%")),family="myfzhzh",size=5,colour="white")+ geom_text(data=NULL,aes(x=c(2.5,27.5),y=c(98,115),label=c(1974,2016)),size=10)+ geom_polygon(data=midrect_data_final,aes(x=long,y=lat,fill=Class),colour="white")+ ylim(0,115)+ guides(fill=guide_legend(title=NULL)) + scale_fill_manual(values=color)+ labs(title="美国居民和非营利部门的金融资产分布与社会融资成本\n（1974年至2016年）", caption="备注：金融资产数据来自于美联储发布的美国国家资产负债表年报,贷款利率数据来自世界银行官网。" )+

theme_void(base_size=18,base_family="myfzhzh") %+replace% theme( legend.position=c(.25,.95), legend.direction ="horizontal", plot.title=element_text(size=35,hjust=0), plot.caption=element_text(size=20,hjust=0), plot.margin=margin(10,0,10,0,unit="pt"), legend.text=element_text(size=20) ) showtext.end() dev.off()

459 篇文章81 人订阅

0 条评论

## 相关文章

35950

10320

15210

628100

### 【精选】破解波动性突破实盘系统

1、波动性突破实盘系统介绍 1.1 系统设计思想 波动性突破， 本身带有一定程度自适应市场的特点， 为趋势跟踪系统中的上品， 我们再加入时间清仓、 顺势下轿的...

39670

### IT比试概率数学题

http://www.cnblogs.com/renyuan/archive/2012/09/24/2699654.html

14510

71520

32240

34630

17930