Segement_order = data.frame() Label = data.frame() Num = 0 for( Level in unique(GO_TB$Type)){ GROUP = GO_TB$Term[GO_TB$Type == Level] hc <- hclust(dist(GO_TB_matrix[row.names(GO_TB_matrix) %in% GROUP,])) dendr <- dendro_data(hc, type="rectangle") S_tmp <- segment(dendr) S_tmp$Level <- Level L_tmp <- label(dendr) if(Num >0){ Segement_order$x = Segement_order$x + nrow(L_tmp) Segement_order$xend = Segement_order$xen + nrow(L_tmp) Label$x = Label$x + nrow(L_tmp) } Segement_order <- rbind(Segement_order, S_tmp) Label <- rbind(Label, L_tmp) Num = Num +1 }
Segement_order$label = NA Segement_order$label[match(Label$x, Segement_order$x)] = as.character(Label$label)
Segement_order$Level = factor(Segement_order$Level, levels=unique(Segement_order$Level))
Titl_list2 = data.frame() for(Level in unique(Segement_order$Level)){ Num = Segement_order$x[which(Segement_order$Level == Level)] Num_max = max(Num) Num_min = min(Num) print(Num_max) tmp <- data.frame(y =(Num_max+Num_min)/2, height = Num_max-Num_min, label= Level) Titl_list2 = rbind(Titl_list2, tmp) }
GO_PLOT <- ggplot() + geom_point(data= GO_TB, aes(x =Sample, y= Term, size= DEGs_In_Term, color = Up_ratio)) + scale_color_gradient2(high = "salmon",mid = "grey", low = "steelblue", name = "Scaled Up-regulated ratio") + theme_bw() + theme( strip.text = element_text(face = "bold"), strip.background = element_rect(colour = "black", fill = FALSE), axis.text = element_blank(), axis.ticks = element_blank(), axis.line.x = element_blank(), plot.title = element_text(hjust = 0.5), legend.position = "left", panel.background = element_blank()) + labs(title="GO Enrichment", x="Samples", y="Categories", size = "Counts")+ geom_segment(data = Segement_order, aes(x=-y/100, y=x, xend=-yend/100, yend=xend))+ scale_y_discrete(position = "right") + geom_tile(data=Titl_list2, aes(x=3,width = 5, y =y, height = height+1,fill=label), alpha=.2)+ geom_tile(data=Titl_list2, aes(x=8,width = 5, y =y, height = height+1, fill=label), alpha=.1, )+ geom_tile(data=Titl_list2, aes(x=13,width = 5, y =y, height = height+1,fill=label), alpha=.2)
print(GO_PLOT)
|