R语言与医学统计图形-16ggplot2几何对象之标签与文本

Posted jessepeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言与医学统计图形-16ggplot2几何对象之标签与文本相关的知识,希望对你有一定的参考价值。

ggplot2绘图系统——添加标签与文本、数学表达式、条形图文本、注释

1. 文本与标签添加

  • geom_label的文本将以标签形式出现,即文本会带有一个背景色。

  • geom_text则是纯文本形式展示。

  • annotaete函数则在图上添加一个注释图层。

文本与标签区别

p <- ggplot(mtcars,aes(wt,mpg,label=rownames(mtcars)))
a <- p+geom_text()
b <- p+geom_label()
gridExtra::grid.arrange(a,b,ncol=2)

技术图片

将散点与文本组合在一起。

p+geom_point(color='dodgerblue')+
  geom_text(nudge_x = 0.15, #将文本整体位置平移
            angle=45)  #文本倾斜

技术图片
变量映射。

  scale_color_manual(values=c('black','white','gray'))

技术图片
因为同时映射了填充色和字体颜色,所以图例中出现字母a,目前还不能很好去掉。建议除了label映射外,不要进行多余映射。

2.数学表达式添加

数学表达式本质也是一种文本,但需要解析,如parse参数。
x <- 1:8 df <- data.frame(x=1:8,y=1.2+x^2) ggplot(df,aes(x,y))+geom_point()+ geom_smooth()+ geom_text(aes(x=4,y=40),label=‘y == 1.2 +x^2‘, parse = TRUE, size=7)
技术图片

3. 在条形图上添加文本

#条形图上添加文本 
df <- data.frame(x=factor(c(1,1,2,2,2,1)),
                 y=c(18,31,22,14,19,32),
                 grp=c('a','b','a','b','c','c'))
ggplot(df,aes(x=x,y=y,fill=grp))+
  geom_bar(stat = 'identity',position = 'dodge')+
  geom_text(aes(y=y+1,label=y),position = position_dodge(0.9))
#在y+1处添加文本,使之在条柱上方,内容为y
#postion_dodge函数表示标签据条柱中心位置的偏移量

技术图片
堆栈式条图文本

df <- transform(df,mid_y=ave(df$y,df$x,FUN = function(var)
  cumsum(var)-(0.5*var)))
#ave分类汇总统计函数,类似tapply。根据x不同水平计算函数y值

ggplot(data=df,aes(x,y,fill=grp,label=y))+
  geom_bar(stat='identity')+
  geom_text(aes(y=mid_y),size=9)

上图堆栈顺序不对,两次翻转调整。

df <- transform(df,mid_y=ave(ave(df$y,df$x,FUN=rev),
                             df$x,FUN = function(var)
  cumsum(var)-(0.5*var)))
#根据x水平对y进行翻转
ggplot(data=df,aes(x,y,fill=grp,label=y))+
  geom_bar(stat = 'identity')+
  geom_text(aes(y=ave(df$mid_y,df$x,FUN=rev)),size=9)
#再次翻转
ggplot(df,aes(x,y,fill=grp,label=y))+
  geom_bar(stat='identity')+
  geom_text(aes(y=mid_y),size=9,
            position = position_stack(vjust=0.5))

结合位置函数简化代码。

df <- data.frame(x=factor(c(1,1,2,2,2,1)),
                 y=c(18,31,22,14,19,32),
                 grp=c('a','b','a','b','c','c'))
ggplot(df,aes(x=x,y=y,fill=grp))+
  geom_bar(stat = 'identity',position = 'stack')+
  geom_text(aes(label=y),position = position_stack(vjust = 0.5),size=6)

技术图片

4.注释添加

annotate函数在图上某个位置或某区域添加注释,无需映射变量,只需指定位置。

除了添加文本外,还可在任意位置添加散点、矩形、线段等元素。
p <- ggplot(mtcars,aes(x=wt,y=mpg))+geom_point() a <- p+annotate("text",x=4,y=25,label=‘I love R‘, size=5,color=‘forestgreen‘) #添加矩形 b <- p+annotate(‘rect‘,xmin=3,xmax=4.2,ymin=12, ymax = 21,alpha=.2,fill=‘forestgreen‘) #线段 c <- p+annotate(‘segment‘,x=2.5,xend=4,y=15, yend=25,color=‘blue‘) #点线段 d <- p+annotate(‘pointrange‘,x=3.5,y=20,ymin=12, ymax=28,color=‘red‘,size=1.5) grid.arrange(a,b,c,d,ncol=4)
技术图片

以上是关于R语言与医学统计图形-16ggplot2几何对象之标签与文本的主要内容,如果未能解决你的问题,请参考以下文章

R语言与医学统计图形-12ggplot2几何对象之条图

R语言与医学统计图形-13ggplot2几何对象之盒形图

R语言与医学统计图形-17ggplot2几何对象之热图

R语言与医学统计图形-11ggplot2几何对象之散点图

R语言与医学统计图形-14ggplot2几何对象之直方密度图

R语言与医学统计图形-10ggplot2图形映射