ggplot2繪制聚類樹加堆砌條形圖

通過ggplot2繪制一個美觀的堆砌條形圖,并添加聚類樹,關(guān)注公眾號R語言數(shù)據(jù)分析指南后臺回復(fù)treebar獲得實例數(shù)據(jù)及代碼,廢話不多說直接看代碼

定義顏色卡

rm(list=ls())
pacman::p_load(tidyverse,reshape,RColorBrewer,ggtree,aplot)
colors <-c("#E41A1C","#1E90FF","#FF8C00","#4DAF4A","#984EA3",
           "#40E0D0","#FFC0CB","#00BFFF","#FFDEAD","#90EE90",
           "#EE82EE","#00FFFF","#F0A3FF", "#0075DC", 
           "#993F00","#4C005C","#2BCE48","#FFCC99",
           "#808080","#94FFB5","#8F7C00","#9DCC00",
           "#426600","#FF0010","#5EF1F2","#00998F",
           "#740AFF","#990000","#FFFF00")

讀入數(shù)據(jù)繪制行聚類樹

data <- read.delim("data.xls",header = T,row.names = 1,
                 check.names = F,sep="\t") %>%
  mutate(sum= rowSums(.),ID=row.names(.),
         persent = sum/sum(sum)*100,sum=NULL) %>%
  filter(persent >=1) %>% select(-persent) %>%
  select(ID, everything())

p <- data %>% select(-ID) %>% t()
tree <- hclust(dist(p)) %>%
  ggtree(layout="rectangular",branch.length="none")+
  geom_tiplab(hjust = -.5,size=3,fontface="plain")+
  xlim_tree(9)

a1 <- melt(data)
a2 <- "group.xls" %>% read.delim()
a4 <- NULL

for (i in seq_len(nrow(a1))) { 
  a4[i] <- a2[which(a2[,1] == a1[i, 2]),2] }

a1[,4] <- a4

繪制水平柱狀圖

bar <- a1 %>% ggplot(aes(variable,value,fill=ID))+
  geom_bar(stat="identity",position="fill")+
  labs(x="",y="")+
  theme_minimal()+expand_limits(x=0,y=0)+
  theme(axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.text.y=element_blank(),
        axis.ticks.y=element_blank(),
        axis.ticks.x=element_blank(),
        legend.title=element_blank())+
  scale_fill_manual(values = colors)+
  scale_y_continuous(expand=c(0,0))+
  coord_flip()

aplot包將聚類樹與柱狀圖拼接

bar %>% insert_left(tree,width=.5)

參考:https://mp.weixin.qq.com/s/H1UnrHxUesJ-q4wh1c1Byw

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容