前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言可视化——图表美化与套用主题(下)

R语言可视化——图表美化与套用主题(下)

作者头像
数据小磨坊
发布2018-04-11 13:38:28
1.1K0
发布2018-04-11 13:38:28
举报
文章被收录于专栏:数据小魔方数据小魔方

昨天的分享跟大家简单介绍了关于柱形图图表元素美化的思路,今天接着分享关于套用主题。

因为单独使用代码来调整单个图表元素,实在是太费劲了,更何况图表的细节元素有那么多,每一个都要单独写一句代码,即便简化后,也是一笔很大的工作量。

所以R社区的开发者就创造出了图表主题包这种半成品的图表模板,通过基础图表输出+套用订制主题来达到高效图表美化的目标。

这里为了图表效果最佳,我不用内置数据集,直接使用代码生成数据框:

data<-data.frame(conpany=c("Apple","Google","Facebook","Amozon","Tencent"),Revenue=c(5000,3500,2300,2100,3100))

以上使用函数生成了2015年五个著名互联网公司的年度营业额数据(数据纯属虚构,无从考证)数据指标。

然后加载我们需要的做图包:特别是grid和ggthemes包将是我们调整与美化图表的主要支撑。

library(ggplot2)

library(ggthemes)

library(grid)

下面我们就可以直接使用ggplot作图了,大家应该还记得昨天的柱形图语法吧:

ggplot(data,aes(reorder(conpany,-Revenue),Revenue))+geom_bar(stat="identity")

ggplot(data,aes(reorder(conpany,-Revenue),Revenue))+geom_bar(stat="identity")+labs(x="Company",y="The Revenue of 2015($)")+ggtitle("The Financial Performance of five giant")

坦白的说,这个图表足够精准、简洁、实用,无论是用在论文里还是用在报告中,都没有太大问题,至少是不算难看。

可是既然有能做的更美,而又不会浪费太多时间的方法,为啥不用呢~

接下来就是ggthemes包的定制主题大展拳脚的时候了~

我们用以上图表的最初代码再加上特定主题,效果一下子六上天!

主题:theme_bw()

ggplot(data,aes(reorder(conpany,-Revenue),Revenue))+geom_bar(stat="identity")+labs(x="Company",y="The Revenue of 2015($)")+ggtitle("The Financial Performance of five giant")+theme_bw()

主题:theme_wsj()

ggplot(data,aes(reorder(conpany,-Revenue),Revenue))+geom_bar(stat="identity")+labs(x="Company",y="The Revenue of 2015($)")+ggtitle("The Financial Performance of five giant")+theme_wsj()

主题+颜色主题:theme_wsj()+scale_fill_wsj("rgby", "")

ggplot(data,aes(reorder(conpany,-Revenue),Revenue,fill="steelbule"))+geom_bar(stat="identity")+labs(x="Company",y="The Revenue of 2015($)")+ggtitle("The Financial Performance of five giant")+theme_wsj()+scale_fill_wsj()

以上图表套用华尔街日报的主题模板和配色模板,看起来已经很完美了,但是图表中依然有很多不完美的地方,比如刻度线太短、单序列却添加了多余的图例、字体不太符合我们的审美。

下面一个一个解决:

ggplot(data,aes(reorder(conpany,-Revenue),Revenue,fill="steelbule"))+geom_bar(stat="identity")+labs(x="Company",y="The Revenue of 2015($)")+ggtitle("The Financial Performance of five giant")+theme_wsj()+scale_fill_wsj()+geom_text(aes(label = Revenue, vjust = -0.5, hjust = 0.5))+theme(legend.position='none',axis.ticks.length=unit(0.5,'cm'))

以上过程在使用华尔街日报主题及配色包的同时,添加了我们需要的数据标签、删除了无效图例、同时加长了刻度线等图表元素。

其实以上所用到的图表主题内仍然是可以添加可选参数的:

ggplot(data,aes(reorder(conpany,-Revenue),Revenue,fill="steelbule"))+geom_bar(stat="identity")+labs(x="Company",y="The Revenue of 2015($)")+ggtitle("The Financial Performance of five giant")+theme_wsj(color="gray")+scale_fill_wsj("rgby", "")+geom_text(aes(label = Revenue, vjust = -0.5, hjust = 0.5))+theme(legend.position='none',axis.ticks.length=unit(0.5,'cm'))

当然,如果我们找到了更好的一组配色,我们也可以仅仅使用华尔街日报的主题,而使用我们自己准备好的调色板:

ggplot(data,aes(reorder(conpany,-Revenue),Revenue,fill="steelbule"))+geom_bar(stat="identity")+labs(x="Company",y="The Revenue of 2015($)")+ggtitle("The Financial Performance of five giant")+theme_wsj()+scale_fill_manual(values=c("#FB882C","#5B88A0"))+geom_text(aes(label = Revenue, vjust = -0.5, hjust = 0.5))+theme(legend.position='none',axis.ticks.length=unit(0.5,'cm'))

当你厌倦了华尔街日报的风格的时候,你也可以试一试经济学人的风格主题:

ggplot(data,aes(reorder(conpany,-Revenue),Revenue,fill="steelbule"))+geom_bar(stat="identity")+labs(x="Company",y="The Revenue of 2015($)")+ggtitle("The Financial Performance of five giant")+theme_economist(base_size=14)+scale_fill_economist()+geom_text(aes(label = Revenue, vjust = -0.5, hjust = 0.5))+theme(legend.position='none',axis.ticks.length=unit(0.5,'cm'))

如果你觉得柱形图的数据条间距太宽,也可以通过在在geom_bar()中利用width=0.65参数进行自定义修改。

ggplot(data,aes(reorder(conpany,-Revenue),Revenue,fill="steelbule"))+geom_bar(stat="identity",width=0.65)+labs(x="Company",y="The Revenue of 2015($)")+ggtitle("The Financial Performance of five giant")+theme_economist(base_size=14)+scale_fill_economist()+geom_text(aes(label = Revenue, vjust = -0.5, hjust = 0.5))+theme(legend.position='none',axis.ticks.length=unit(0.5,'cm'))

其实无论怎么样,虽然套用行业顶级水平的主题可以节省我们很多作图时间,提升作图效率,但是毕竟与自己部门或者企业的风格相差甚远,如果是所在的企业比较重视企业形象或者强调品牌概念的话,最好还是在别人的主题基础上,针对业务要求再做一些局部调整,这样才能即吸收别家的长处,又兼顾自己的特色。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据小魔方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档