ggplot2绘图系统——位置调整函数

可以参数​​position​​​来调整,也有专门的函数​​position_*​​​系列来设置。
位置函数汇总:
R语言与医学统计图形-【24】ggplot位置调整函数_微信公众号

1.排列

并排排列

mean <- runif(12,1,3)
lower <- mean-runif(12,0,2)
upper <- mean+runif(12,0,2)
mydata <- data.frame(group=rep(LETTERS[1:4],each=3),
                     levels=rep(c('low','middle','high'),4),
                     mean=mean,lower=lower,upper=upper)
dodge <- position_dodge(width = 0.5)
ggplot(mydata,aes(levels,ymin=lower,ymax=upper,color=as.factor(group)))+
  geom_errorbar(position = dodge,width=0.2,size=1.2)+
  geom_point(aes(levels,mean),position = dodge,size=4)

R语言与医学统计图形-【24】ggplot位置调整函数_ide_02

堆栈排列

death <- c('胃癌','肺癌','食管癌','肝癌','脑癌')
percent <- c(0.21,0.28,0.09,0.32,0.1)
pro=scales::percent(percent)
cancer <- data.frame(death=death,per=percent,
                     disease='cancer',prop=pro)

ggplot(cancer,aes(x=disease,y=per,fill=death))+
  geom_bar(stat = 'identity')+
  geom_text(aes(label=prop),
            position = position_stack(vjust = 0.5),size=6.5)

R语言与医学统计图形-【24】ggplot位置调整函数_ide_03

2.扰动点

a <- ggplot(mpg,aes(class,hwy))+geom_boxplot()+geom_point()
b <- ggplot(mpg,aes(class,hwy))+geom_boxplot()+
  geom_jitter()
c <- ggplot(mpg,aes(class,hwy))+geom_boxplot()+
  geom_point(position = 'jitter')
grid.arrange(a,b,c,ncol=3)

R语言与医学统计图形-【24】ggplot位置调整函数_微信公众号_04
上图b和c的扰动方式稍有不同。

3.水平和垂直的调整

包括​​hjust/vjust​​​,​​position_nudge​​​等,注意nudge(推动)不能作为postion参数的选项,即不能类似​​geom_point(position='nudge')​

df <- data.frame(x=c(1,3,2,5),y=c('a','b','c','d'))

#在点的原位置添加标签
a <- ggplot(df,aes(x,y))+geom_point()+geom_text(aes(label=y))
#标签向下移动一个单位
b <- ggplot(df,aes(x,y))+geom_point()+geom_text(aes(label=y),
                                                position=position_nudge(y=-0.1))
grid.arrange(a,b,ncol=2)

R语言与医学统计图形-【24】ggplot位置调整函数_微信公众号_05

4.有规则扰动

同样只能作为函数​​position_jitterdodge​​使用。

同一组内,红色点只出现在红色盒形上,不会出现在其他位置。

dsub <- diamonds[sample(nrow(diamonds),1000),]
#无规则
a <- ggplot(dsub,aes(x=cut,y=carat,fill=clarity))+
  geom_boxplot(outlier.size = 0)+
  geom_point(pch=21,position = position_jitter())
#有规则
b <- ggplot(dsub,aes(x=cut,y=carat,fill=clarity))+
  geom_boxplot(outlier.size = 0)+
  geom_point(pch=21,position = position_jitterdodge())

grid.arrange(a,b,ncol=2)

R语言与医学统计图形-【24】ggplot位置调整函数_微信公众号_06


作者:Bioinfarmer

 若要及时了解动态信息,请关注同名微信公众号:Bioinfarmer。