do_heatmap | R Documentation |
the fuction creates an heatmap starting from a standard table with sample, subjects, time and class columns as descriptors
do_heatmap(x, result = NULL, data.info = c("sample", "subject", "time", "class"), title = "", T0 = F, time0 = NULL, distmet = "euclidean", hclustmet = "ward.D2")
x |
|
result |
|
data.info |
|
title |
|
T0 |
|
time0 |
|
distmet |
|
hclustmet |
Luca Narduzzi
##---- Should be DIRECTLY executable !! ---- ##-- ==> Define data, use random, ##-- or do help(data=index) for the standard data sets. ## The function is currently defined as function (x, result = NULL, data.info = c("sample", "subject", "time", "class"), title = "", T0 = F, time0 = NULL, distmet = "euclidean", hclustmet = "ward.D2") { if (is.null(result) == F) { data_only <- x[, row.names(result)] } else { data_only <- x[, (length(data.info) + 1):(ncol(x))] } dati <- data.frame(x[, data.info], data_only) if (T0 == T) { dati <- zero.norm(dati, data.info = data.info, time0 = time0) } data_only <- dati[, (length(data.info) + 1):(ncol(dati))] row.names(data_only) <- dati[, 1] factors <- x[, data.info] CLASSES <- dati$class group1 <- as.numeric(as.factor(as.character(CLASSES))) color_scale1 <- c("blue", "yellow", "red", "green") CLASSES <- color_scale1[match(group1, as.numeric(as.factor(color_scale1)))] SUBJECT <- as.numeric(factors$subject) n <- max(unique(as.numeric(dati$subject))) qual_col_pals = brewer.pal.info[brewer.pal.info$category == "qual", ] col_vector = unlist(mapply(brewer.pal, qual_col_pals$maxcolors, rownames(qual_col_pals))) color_scale <- sample(col_vector, n) SUBJECT <- color_scale[match(SUBJECT, as.numeric(as.factor(color_scale)))] TIME <- as.numeric(as.factor(factors$time)) n <- max(unique(as.numeric(as.factor(dati$time)))) qual_col_pals = brewer.pal.info[brewer.pal.info$category == "qual", ] col_vector = unlist(mapply(brewer.pal, qual_col_pals$maxcolors, rownames(qual_col_pals))) color_scale <- sample(col_vector, n) TIME <- color_scale[match(TIME, as.numeric(as.factor(color_scale)))] distCor <- function(x) dist(x, method = distmet) hclustAvg <- function(x) hclust(x, method = hclustmet) scale_data <- scale(data_only, center = T, scale = T) scale_data[which(scale_data <= -3)] <- -3 scale_data[which(scale_data >= 3)] <- 3 myCols = cbind(CLASSES, TIME, SUBJECT) p <- heatmap.plus(t(as.matrix(scale_data)), hclustfun = hclustAvg, distfun = distCor, scale = "none", Colv = T, Rowv = T, col = colorpanel(n = nrow(scale_data), low = "blue", mid = "black", high = "red"), labCol = colnames(t(data_only)), labRow = row.names(t(data_only)), cexCol = 0.8, cexRow = 0.8, margins = c(4, 8), ColSideColors = myCols, main = title) legend("topright", legend = unique(dati$class), col = unique(CLASSES), lwd = 5, lty = 1, cex = 0.7, inset = c(0, 0)) }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.