-
Notifications
You must be signed in to change notification settings - Fork 1
/
Figure_3_Lower_Heatmap.r
63 lines (47 loc) · 2.28 KB
/
Figure_3_Lower_Heatmap.r
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
##Reproduction of Figure 3 Manuscript
rm(list=ls())
library(reshape2)
library(viridis)
library(ggplot2)
#example for HC - J genes in Canzar dataset (you can change for any gene type)
matrix <- read.table("Canzar/HC_J.txt")
matrix <- as.matrix(matrix)
melted_cormat <- melt(matrix)
melted_cormat$Var1 <- factor(melted_cormat$Var1, levels=c("VDJpuzzle","MIXCR","TRUST4","BRACER","BALDR","BASIC"))
melted_cormat$Var2 <- factor(melted_cormat$Var2, levels=c("VDJpuzzle","MIXCR","TRUST4","BRACER","BALDR","BASIC"))
# Get lower triangle of the correlation matrix
get_lower_tri<-function(matrix){
matrix[upper.tri(matrix)] <- NA
return(matrix)
}
lower_tri <- get_lower_tri(matrix)
lower_tri
# Melt the correlation matrix
library(reshape2)
melted_cormat <- melt(lower_tri, na.rm = TRUE)
head(melted_cormat)
melted_cormat$Var1 <- factor(melted_cormat$Var1, levels=c("VDJpuzzle","MIXCR","TRUST4","BRACER","BALDR","BASIC"))
melted_cormat$Var2 <- factor(melted_cormat$Var2, levels=c("VDJpuzzle","MIXCR","TRUST4","BRACER","BALDR","BASIC"))
# Heatmap
library(ggplot2)
# Create a ggheatmap
ggheatmap <- ggplot(melted_cormat, aes(Var2, Var1, fill = value))+
geom_tile(color = "white")+
scale_fill_viridis(discrete=FALSE)+
theme_minimal()+ # minimal theme
theme(axis.text.x = element_text(angle = 45, vjust = 1,
size = 12, hjust = 1))+
coord_fixed()
# Print the heatmap
print(ggheatmap)
ggheatmap +
geom_text(aes(Var2, Var1, label = value), color = "black", size = 4) +
theme(
axis.title.x = element_blank(),
axis.title.y = element_blank(),
panel.grid.major = element_blank(),
panel.border = element_blank(),
panel.background = element_blank(),
axis.ticks = element_blank())+
guides(fill = guide_colorbar(barwidth = 7, barheight = ,
title.position = "top", title.hjust = 0.5))+ theme(plot.title = element_text(size=10))+ theme(text=element_text(size=10))+theme(axis.text.x = element_text(face="bold", color="#000001")) + theme(axis.text.y = element_text(face="bold", color="#000001"))+theme(text = element_text(size = 14, face="bold"))+theme(axis.title.y = element_text(size = 14))+theme(legend.text = element_text(size = 14,face="plain"))+theme(legend.title = element_text(size = 14))+scale_y_discrete(position = "right")