前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言可视化——ggplot图表系统中的辅助线

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

作者头像
数据小磨坊
发布2018-04-11 14:53:52
2K0
发布2018-04-11 14:53:52
举报
文章被收录于专栏:数据小魔方数据小魔方

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

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

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

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

代码语言:javascript
复制
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")

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

代码语言:javascript
复制
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图层为柱形图添加了均值辅助线,但是大家一定好奇为啥均值线那么低,低于所有公司的销售额,因为均值是季度均值,而销售额是年度累计销售额。

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

代码语言:javascript
复制
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")

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

代码语言:javascript
复制
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()

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

代码语言:javascript
复制
ggplot(economics,aes(date,unemploy))+geom_line()+geom_vline(aes(xintercept=as.numeric(start)),data=presidential)
代码语言:javascript
复制
> 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函数一个字段,从而在折线图中绘制出多个时间点的辅助线。

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

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

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

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

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