R語言與醫學統計圖形-【28】ggplot2擴展包ggrepel、ggsci、gganimate、ggpubr


ggplot2繪圖系統——擴展包ggrepel、ggsci、gganimate、ggpubr等

部分擴展包可在CRAN直接下載,有些需借助devtools包從Github下載。

1. ggrepel包

用來在圖上添加文字和標簽,相比geom_text和geom_label函數,能將重疊的標簽分開,並添加指示短橫線。

library(ggrepel)
ggplot(mtcars,aes(wt,mpg))+geom_point(color='red')+
  geom_text_repel(aes(label=rownames(mtcars)),
                  segment.color = 'blue')+
  theme_classic(base_size = 16)

image.png

2. ggsci包

肖楠作品,針對科研人員的包,滿足不同雜志風格的配色,包括十幾種配色方案。

基本配色函數:
image.png
Lancet配色示例。

library(ggsci)
p1 <- ggplot(subset(diamonds,carat>=2.2),aes(x=table,y=price,color=cut))+
  geom_point(alpha=0.7)+
  geom_smooth(method = 'loess',alpha=0.05,size=1,span=1)+
  theme_bw()
a <- p1+scale_color_lancet()

p2 <- ggplot(subset(diamonds,carat>2.2&depth>55&depth<70),
             aes(x=depth,fill=cut))+
  geom_histogram(color='black',binwidth = 1,position = 'dodge')+
  theme_bw()
b <- p2+scale_fill_lancet()

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

image.png
JCO配色風格示例。

c <- p1+scale_color_jco()
d <- p2+scale_fill_jco()
grid.arrange(c,d,ncol=2)

image.png

3. gganimate包

繪制動態圖(將靜態的png、jpeg圖片轉化成動態的gif文件)。

使用gganimate前,需在本機上先安裝ImageMagick軟件(專用於圖片編輯、合成、轉換及其他處理的軟件)。

library(gganimate)
date <- as.character(economics$date)
economics$year <- substr(date,1,4) #提取年份
p <- ggplot(economics,aes(date,uempmed,size=unempoly,
                          frame=year))+#必須參數,展示每一幀名稱
  geom_point()
gganimate(p)
aq <- airquality
aq$date <- as.Date(paste(1973,aq$Month,aq$Day,sep = '-'))
p2 <- ggplot(aq,aes(date,Temp,frame=Month,
                    cumulative=TRUE))+ #疊加顯示,而非單獨顯示每一幀
  geom_line()
gganimate(p2,title_frame=FALSE)

4. ggpubr包

快速生成論文發表級的統計圖形。

兩兩比較盒形圖

library(ggpubr)
data('ToothGrowth')
df <- ToothGrowth
p <- ggboxplot(df,
               x='dose',
               y='len',
               color = 'dose',#顏色映射變量
               palette = c('#00AFBB','#E7B800','#FC4E07'), #盒形顏色取值
               add = 'jitter', #點擾動
               shape='dose' #擾動點形狀
               )
p
#代碼風格更偏向於基礎包,注意傳入的變量都是字符串形式


#######統計學差異繪圖

#定義哪些組兩兩比較
my_comparisons <- list(c('0.5','1'),c('1','2'),c('0.5','2'))
#添加組間比較p值
b <- p+stat_compare_means(comparisons = my_comparisons)+
  stat_compare_means(label.y = 50) #p值位置

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

image.png
小提琴圖

ggviolin(df,
         x='dose',
         y='len',
         fill = 'dose',
         palette = c('#00AFBB','#E7B800','#FC4E07'), 
         add = 'boxplot', #添加盒形圖
         add.params = list(fill='white'))+
         #定義后添加圖形的屬性,這里定義盒形圖填充色
  stat_compare_means(comparisons = my_comparisons,
                     label = 'p.signif') +#以顯著程度展示,而非p
  stat_compare_means(label.y=50) #總體比較p值位置

image.png

條形圖和滑珠圖
滑珠圖是條形圖一種變形。
示例比較。

mtcars$name <- rownames(mtcars)
mtcars$cyl <- as.factor(mtcars$cyl)

#條形圖
a <- ggbarplot(mtcars,x='name',y='mpg',
          fill = 'cyl',
          color='white',
          palette = 'lancet', #配色風格,JCO
          sort.val = 'desc', #對y變量降序
          sort.by.groups = FALSE, #各組不分開排列
          x.text.angle=90
          )

#滑珠圖
b <- ggdotchart(mtcars,x='name',y='mpg',
                color = 'cyl',
                palette = 'jco',
                sorting = 'ascending', #升序排列
                add = 'segments', #添加線段,使之成為滑珠圖
                ggtheme = theme_pubr() #圖形整體風格
                )
grid.arrange(a,b,ncol=2)

image.png
改善后的滑珠圖。

ggdotchart(mtcars,x='name',y='mpg',
           color = 'cyl',
           palette = c('#00AFBB','#E7B800','#FC4E07'),
           sorting = 'descending', 
           add = 'segments', 
           rotate = TRUE,
           group = 'cyl', #各亞組分開
           dot.size = 6, #散點大小
           label = round(mtcars$mpg),#mpg值作為散點標簽
           font.label = list(color='white',size=9,vjust=0.5),
           #定義散點其他屬性
           ggtheme = theme_pubr() 
)

image.png

5. 其他擴展包

  • ggfortify包
  • ggforce包
    對ggplot2幾何對象進行了擴展,加入arcs、curves等幾何對象,更方便繪制餅圖、弧形等。
  • ggradar包
    雷達圖/蜘蛛圖。
  • ggnetwork包
    社交網絡數據可視化。


免責聲明!

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



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