查看原文
其他

R语言可视化——ggplot图表系统中的辅助线

2016-10-25 小魔方 数据小魔方

在之前的推送中,曾经有过一篇介绍excel图表辅助线的制作方法,其中用到的技巧五花八门、令人眼花缭乱。


而ggplot图表系统中的辅助线添加起来却异常简单,非常易于操作。


这主要得益于ggplot函数系统的图层控制理念以及该包的开发者很早就意识到图表辅助线这一层面的图表元素需求。


接下来我以几个案例的形式对图表辅助线操作进行演示:


library(ggplot2)

library(reshape2)

library(ggthemes)


data<-data.frame(Name = c("苹果","谷歌","脸书","亚马逊","腾讯"),Conpany = c("Apple","Google","Facebook","Amozon","Tencent"),Sale2013 = c(5000,3500,2300,2100,3100),Sale2014 = c(5050,3800,2900,2500,3300),Sale2015 = c(5050,3800,2900,2500,3300),Sale2016 = c(5050,3800,2900,2500,3300))


mydata<-melt(data,id.vars=c("Name","Conpany"),variable.name="Year",value.name="Sale")


ggplot(mydata,aes(reorder(Conpany,-Sale),Sale,fill=Conpany))+geom_bar(stat="identity")




以上柱形图中,我们如果想要了解五个公司的销售额均值以及单个公司销售额与均值的对比情况,需要在图表中添加一条平均线。


ggplot(mydata,aes(reorder(Conpany,-Sale),Sale,fill=Conpany))+geom_bar(stat="identity")+geom_hline(aes(yintercept=mean(Sale)),linetype=5,col="red")



以上通过geom_hline图层为柱形图添加了均值辅助线,但是大家一定好奇为啥均值线那么低,低于所有公司的销售额,因为均值是季度均值,而销售额是年度累计销售额。



接下来我们制作一个分季度的柱形图。


ggplot(mydata,aes(reorder(Conpany,-Sale),Sale,fill=Year))+geom_bar(stat="identity",position="dodge")+geom_hline(aes(yintercept=mean(Sale)),linetype=5,col="red")




当然这种均值线在分面状态下也是可以添加的。


ggplot(mydata,aes(reorder(Conpany,-Sale),Sale,fill=Year))+geom_bar(stat="identity",position="dodge")+geom_hline(aes(yintercept=mean(Sale)),linetype=5,col="red")+facet_grid(.~Year)




辅助线在散点图中也是经常使用的一种图表元素,它可以帮助我们对分布形态进行分割和归纳,使得数据分布形态及趋势更加明显。


接下来使用diamond数据集来展示散点图中的辅助线。


ggplot(diamonds,aes(carat,price))+geom_point()




以上散点图没有很明显的分散趋势,不过为了演示散点图中的辅助线,我还是将散点像素画处理,给散点图加上均值十字线。


ggplot(diamonds,aes(carat,price))+geom_point(shape=".")+geom_hline(aes(yintercept=mean(price)),linetype=5,col="red")+geom_vline(aes(xintercept=mean(carat)),linetype=5,col="red")




像素画处理之后,再加上均值十字线,你可以清晰地看到,数据分布形态中,左下角最为密集。


辅助线的另外一种常见的用途就是在时间序列数据中。


ggplot(economics,aes(date,unemploy))+geom_line()




这里可以使用辅助线来标注我们最感兴趣的时间点数据:


ggplot(economics,aes(date,unemploy))+geom_line()+geom_vline(aes(xintercept=as.numeric(start)),data=presidential)




> head(presidential)

        name      start        end      party

1 Eisenhower 1953-01-20 1961-01-20 Republican

2    Kennedy 1961-01-20 1963-11-22 Democratic

3    Johnson 1963-11-22 1969-01-20 Democratic

4      Nixon 1969-01-20 1974-08-09 Republican

5       Ford 1974-08-09 1977-01-20 Republican

6     Carter 1977-01-20 1981-01-20 Democratic


presidential数据集是一个美国历届总统的任期截止时间,通过添加总统任期时间点,我们甚至可以从经济波动数据中观察到经济指标变波动与政治周期的关系。


start是一个代表日期的字段,也就是说我们可以赋值给geom_vline函数一个字段,从而在折线图中绘制出多个时间点的辅助线。



魔方学院QQ群:




QQ群:

微信群:



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存