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

作者: 天善智能 | 来源:发表于2017-11-08 14:15 被阅读27次

感谢关注天善智能,走好数据之路↑↑↑

欢迎关注天善智能,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习,问答、求职一站式搞定!

本文作者:天善智能社区专家杜雨

天善智能社区地址:https://www.hellobi.com/

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


首先大致分析一下该图表,全是矩形块 ,而且错位排列,柱形图,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<-labelmynewdata$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基础开始学起吧,冰冻三尺,非一日之寒,相信假以时日,你也可做的这么棒!

天善学院双十一特价课程限时优惠进行中,五场微课联播免费学习,欢迎关注。https://www.hellobi.com/1111


11月6日年迈的数据分析师教你做年终总结报告

陈丹奕:知乎大神,前百度资深数据分析师

11月7日机器学习与工业实践

邹博:中国科学院副研究员,天津大学特聘教授

11月8日 贝叶斯算法与新闻分类实战

唐宇迪:深度学习领域多年一线实践研究专家,同济大学硕士

11月9日破冰Python,1小时快速入门

王大伟: Python爱好者社区公众号负责人,擅长网络爬虫、数据分析

11月10日 职场也有双11--你贱卖自己的5大常用技巧

陈文:8年经验数据分析师,资深业务顾问。

直播管理员:xtechday,加入直播交流。

相关文章

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

    感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,...

  • 快来给我取个名字吧!

    hey baby my baby 就在今天晚上你有没有偷偷的想她 凌晨几点睡不着是否想过带她回家 好嘛好嘛不策你啦...

  • 你来给我起个笔名吧?

    飞鱼写诗的时候,开始用自己的笔名。 有的人的笔名叫“柠檬西西”,有的人的笔名叫“出水芙蓉”,有的人的笔名叫“桃花公...

  • 随便起个名字吧

    nuninunizainuni 已经一个多月不曾睡过懒觉了,早上实在不想起床,但还是拖着疲惫的身子,坐了起来,戴上...

  • 来,起个名字吧

    这一日,母亲抱着孩子在窗台上玩耍,小孩子高高举着小手想要够东西,可他们眼前除了这明晃晃的玻璃并无他物。母亲细细观察...

  • 随便起个名字吧

    2020年1月13日,叶子从学校坐火车回到了故乡然后是漫长的抗疫期,蜗居,后来的准许商铺营业,放宽封闭政策,到家乡...

  • 给起个名字吧!

    随着年龄的增长,更喜欢回忆 我发现,从我出生的那一刻起,就开始扮演着不同的角色:孩子、学生、老师、妈妈、售货员、司...

  • 为2019亚洲摔跤锦标赛吉祥物取个响亮的名字吧,创意有奖哦!

    嗨,大家好! 我是2019年亚洲摔跤锦标赛吉祥物, 我暂时还没有名字, 大家快来给我起个名字吧。 2019年亚洲摔...

  • 谁给起个名字吧!

    神州大陆,北方鲲国西南,佳宁郡。 地仙村,如果只是听其名,这绝对是个相当令人惊讶的名字,可实际上,这只不过是佳宁郡...

  • 尺八悠思

    第一次听到尺八这个词,有些诧异,怎么会用尺寸来给乐器命名呢?大约是这乐器长一尺八,所以起这么个名字吧。带着狐疑,点...

网友评论

    本文标题:快来给这个图表起个名字吧~

    本文链接:https://www.haomeiwen.com/subject/sjvemxtx.html