快来给这个图表起个名字吧~

2017 年 10 月 30 日 R语言中文社区 杜雨

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


今天又是一个超级有趣的经济学人图表,名字真不好叫,先把代码撸完,你们爱叫啥叫啥吧~

首先大致分析一下该图表,全是矩形块 ,而且错位排列,柱形图,NO,条形图,NO,因为横纵位置都是错开的。

好像骂一句MMP,这图Economics到底是用撒做的,太无聊了。

不过呢,如果是用ggplot2的话,这图确实难不倒我,思路如下。

用geom_rect图层,还记得之前做过的那个方块面积图嘛,思路如出一辙,我们仅需获取所有矩形块四个角所在位置的点坐标即可。

#构造原始数据
mydata<-data.frame( China=c(30,8,6,7,14,11,22,3), SouthKorea=c(15,6,3,5,16,14,19,22) )

根据以上数据标签构造作图数据。

#China组的矩形数据:
start_xmin<-seq(from=15,by=10,length=8) end_xmax<-seq(from=45,by=10,length=8) start_ymin<-cumsum(c(0,mydata[1:7,"China"])) end_ymax<-cumsum(mydata[,"China"])

以上构造了左侧那组矩形的所有边角坐标点,接下来计算矩形中心 坐标点:

mynewdata<-data.frame(start_xmin,end_xmax,start_ymin,end_ymax) mynewdata$label_x<-mynewdata$start_xmin+15mynewdata$label_y<-mynewdata$start_ymin+mydata$China/2

构造右侧矩形系列边角坐标点:

start_xmin<-seq(from=115,by=10,length=8) end_xmax<-seq(from=145,by=10,length=8) start_ymin<-cumsum(c(0,mydata[1:7,"SouthKorea"])) end_ymax<-cumsum(mydata[,"SouthKorea"])
#计算中心点位置
data1<-data.frame(start_xmin,end_xmax,start_ymin,end_ymax) data1$label_x<-data1$start_xmin+15data1$label_y<-data1$start_ymin+mydata$SouthKorea/2

合并左右侧数据

mynewdata<-rbind(mynewdata,data1) mynewdata$value<-c(mydata$China,mydata$SouthKorea)

构造类别标签(图例填色需要)

label=rep(c("Food,beverages & tobacco","Clothing & footwear","Household & services","Health","Transport & communications","Leisure & education","Housing & household fuels","Others"),2) mynewdata$label<-label mynewdata$label<-factor(mynewdata$label,levels=mynewdata$label[1:8],ordered=T)

图形可视化过程

library("ggplot2")
library("grid")
library("showtext")
library("Cairo") font.add("myfont","msyh.ttc") setwd("E:/数据可视化/R/R语言学习笔记/数据可视化/ggplot2/优秀R语言案例")

草图预览:

ggplot(mynewdata)+ geom_rect(aes(xmin=start_xmin, xmax =end_xmax, ymin =start_ymin, ymax =end_ymax,fill=label))

采集色板:

palette<-c("#007990","#68C1C7","#EBEBDF","#6DA091","#AAC4B9","#761618","#249BB3","#848587")

最终图形

CairoPNG(file="matirx_scatter.png",width=1200,height=600) showtext.begin() ggplot(mynewdata)+ geom_rect(aes(xmin=start_xmin, xmax =end_xmax, ymin =start_ymin, ymax =end_ymax,fill=label))+ geom_text(aes(x=label_x,y=label_y,label=paste0(value,"%")),family="myfont",size=6)+ scale_y_continuous(limits=c(0,110),breaks=seq(0,100,10),label=seq(0,100,10))+ scale_fill_manual(values=palette)+ guides(fill=guide_legend(title=NULL,nrow=2)) + labs(title="Composition of nominal consumption per head in China and South Korea,2015",     subtitle="(% of total)",     caption="Sources:National Bureau of Stistics; The Economist Intelligence Unit.")+ theme_void(base_family="myfont",base_size=20) %+replace% theme(      plot.title=element_text(size=25,hjust=0,lineheight=1.2),      legend.position=c(0.60,.95),      plot.caption=element_text(hjust=0),      axis.ticks.y=element_line(),      axis.ticks.length=unit(0.5,'cm'),      plot.margin=margin(1,1,1,1,unit="cm"),      axis.text=element_text(),      axis.text.x=element_blank(), ) showtext.end() dev.off()



哈哈是不是很神奇呀,想不想学这么棒的技能,那就从ggplot2基础开始学起吧,冰冻三尺,非一日之寒,相信假以时日,你也可做的这么棒!


R语言(ggplot2入门)可视化在商务场景中的应用,已经有200+小伙伴加入了!

感兴趣的可点击阅读原文报名参加哦,满满的干货!


登录查看更多
0

相关内容

一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
最新《医学图像深度语义分割》综述论文
专知会员服务
95+阅读 · 2020年6月7日
【干货书】R语言书: 编程和统计的第一课程,
专知会员服务
111+阅读 · 2020年5月9日
元学习与图神经网络逻辑推导,55页ppt
专知会员服务
128+阅读 · 2020年4月25日
【边缘智能综述论文】A Survey on Edge Intelligence
专知会员服务
121+阅读 · 2020年3月30日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
193+阅读 · 2020年3月12日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
152+阅读 · 2019年10月12日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
【电子书推荐】Data Science with Python and Dask
专知会员服务
43+阅读 · 2019年6月1日
一文看懂怎么用 Python 做数据分析
大数据技术
24+阅读 · 2019年5月5日
已删除
架构文摘
3+阅读 · 2019年4月17日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
怎么画高大上的神经网络结构?试试这个!
ggstance:ggplot2的水平版本
R语言中文社区
5+阅读 · 2017年11月17日
使用 Python 绘制《星战》词云
Datartisan数据工匠
3+阅读 · 2017年8月31日
如何七周成为数据分析师
R语言中文社区
4+阅读 · 2017年7月19日
Phrase-Based & Neural Unsupervised Machine Translation
Arxiv
4+阅读 · 2018年5月10日
VIP会员
相关VIP内容
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
最新《医学图像深度语义分割》综述论文
专知会员服务
95+阅读 · 2020年6月7日
【干货书】R语言书: 编程和统计的第一课程,
专知会员服务
111+阅读 · 2020年5月9日
元学习与图神经网络逻辑推导,55页ppt
专知会员服务
128+阅读 · 2020年4月25日
【边缘智能综述论文】A Survey on Edge Intelligence
专知会员服务
121+阅读 · 2020年3月30日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
193+阅读 · 2020年3月12日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
152+阅读 · 2019年10月12日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
【电子书推荐】Data Science with Python and Dask
专知会员服务
43+阅读 · 2019年6月1日
相关资讯
一文看懂怎么用 Python 做数据分析
大数据技术
24+阅读 · 2019年5月5日
已删除
架构文摘
3+阅读 · 2019年4月17日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
怎么画高大上的神经网络结构?试试这个!
ggstance:ggplot2的水平版本
R语言中文社区
5+阅读 · 2017年11月17日
使用 Python 绘制《星战》词云
Datartisan数据工匠
3+阅读 · 2017年8月31日
如何七周成为数据分析师
R语言中文社区
4+阅读 · 2017年7月19日
Top
微信扫码咨询专知VIP会员