break就是截断的意思,一般主要是在画图的时候,Y轴上某些值过大,容易把其它规律给掩盖掉,所以这时候就需要一个截断操作。
今天用下面一组简单的测试数据。
library(ggplot2)
library(ggbreak)
data <- read.table("week.data.txt",header=T,sep="\t")
head(data)
data$day =factor(data$day)
ggplot(data,aes(day,time,fill=week_n))+
geom_bar(stat="identity",show.legend=F)+
theme(axis.text.x=element_text(vjust=0.9,hjust=1,angle=45))
然后,加入隔断,主要通过函数scale_y_break来实现。
ggplot(data,aes(day,time,fill=week_n))+
geom_bar(stat="identity",show.legend=F)+
theme(axis.text.x=element_text(vjust=0.9,hjust=1,angle=45))+
scale_y_break(breaks=c(100,170),ticklabels=seq(180,240,20),scales=0.4)
其中breaks来定义截断的位置,ticklabels来定义截断后的Y轴坐标刻度,scales定义上下显示比例,大于1上面比例大,小于1下面比例大。0.4代表上面比例40%。
ggplot(data,aes(day,time,fill=week_n))+
geom_bar(stat="identity",show.legend=F)+
theme(axis.text.x=element_text(vjust=0.9,hjust=1,angle=45))+
scale_y_break(breaks=c(100,170),ticklabels=seq(180,240,20),scales=0.4)+
facet_wrap(week_n~.,scales="free_x")+
#theme_classic()+
theme(text = element_text(size = 15))
我们也可以利用facet_wrap来进行分面操作。
ggplot(data,aes(day,time,fill=week_n))+
geom_bar(stat="identity",show.legend=F)+
theme(axis.text.x=element_text(vjust=0.9,hjust=1,angle=45))+
scale_y_break(breaks=c(50,100),ticklabels=seq(100,120,5),scales=0.4)+
scale_y_break(breaks=c(120,170),ticklabels=seq(180,240,10),scales=0.4)+
facet_wrap(week_n~.,scales="free_x")+
theme_classic()+
theme(text = element_text(size = 15))
也可以加入多个break,就是写多个scale_y_break函数。
网友评论