R語言與醫學統計圖形-【16】ggplot2幾何對象之標簽與文本


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)

image.png

將散點與文本組合在一起。

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

image.png
變量映射。

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

image.png
因為同時映射了填充色和字體顏色,所以圖例中出現字母a,目前還不能很好去掉。建議除了label映射外,不要進行多余映射。

2.數學表達式添加

數學表達式本質也是一種文本,但需要解析,如parse參數。

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)

image.png

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函數表示標簽據條柱中心位置的偏移量

image.png
堆棧式條圖文本

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)

image.png

4.注釋添加

annotate函數在圖上某個位置或某區域添加注釋,無需映射變量,只需指定位置。

除了添加文本外,還可在任意位置添加散點、矩形、線段等元素。

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)

image.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM