gugl58
10/23/2017 - 11:31 AM

Matrix Heatmap

Plot a heatmap of a given matrix


#' Plot a correlation matrix 
#' In fact... it could be any matrix
#'
#' @param correlationMatrix 
#' A matrix, regardless of dimensions
#' @param axis.textsize 
#' Size of the y and x axis text [ggplot]
#'
#' @return
#' a ggplot object
#' @export
#'
#' @examples
#' print(plot.corrmat(correlationMatrix = matrix(rnorm(1000), 10, 100)))
plot.corrmat <- function(correlationMatrix, axis.textsize=3){
	inst.load.packages("reshape2", silent = TRUE)
	inst.load.packages("ggplot2", silent = TRUE)
	
	melted.df <- melt(correlationMatrix)
	melted.df$Var1 <- factor(melted.df$Var1)
	melted.df$Var2 <- factor(melted.df$Var2)
	melted.df$Var1 <- factor(melted.df$Var1, levels = rev(levels(melted.df$Var1)))
	melted.df$Var2 <- factor(melted.df$Var2, levels = rev(levels(melted.df$Var2)))
	colnames(melted.df) <- c("GeneX", "GeneY", "corr")
	plot00 <-
		ggplot(melted.df, aes(x=GeneX, y=GeneY, fill=corr)) + 
		geom_tile() +
		scale_fill_gradient2(low = "blue", 
							 mid = "white", 
							 high = "darkred",
							 na.value = hcl(h = 130, c = 100, l = 100, alpha = 0.4))+
		theme(axis.text.x = element_text(angle = 90, vjust = 0.5, size=axis.textsize)
			  ,axis.text.y = element_text(size=axis.textsize)
			  ,panel.grid.major = element_blank()
			  ,plot.margin=unit(c(3,3,.2,.2),"cm"), legend.position=c(1.08, .5))
	return(plot00)
}