您好,登录后才能下订单哦!
R语言可视化中如何进行表美化与套用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
今天分享关于套用主题。
因为单独使用代码来调整单个图表元素,实在是太费劲了,更何况图表的细节元素有那么多,每一个都要单独写一句代码,即便简化后,也是一笔很大的工作量。
所以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'))
其实无论怎么样,虽然套用行业顶级水平的主题可以节省我们很多作图时间,提升作图效率,但是毕竟与自己部门或者企业的风格相差甚远,如果是所在的企业比较重视企业形象或者强调品牌概念的话,最好还是在别人的主题基础上,针对业务要求再做一些局部调整,这样才能即吸收别家的长处,又兼顾自己的特色。
关于R语言可视化中如何进行表美化与套用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。