library(gplots)
library("RColorBrewer")
## scale the dataset
df = scale(mtcars)
knitr::kable(head(df, 5)) ## first five rows
| mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Mazda RX4 | 0.1508848 | -0.1049878 | -0.5706198 | -0.5350928 | 0.5675137 | -0.6103996 | -0.7771651 | -0.8680278 | 1.1899014 | 0.4235542 | 0.7352031 |
| Mazda RX4 Wag | 0.1508848 | -0.1049878 | -0.5706198 | -0.5350928 | 0.5675137 | -0.3497853 | -0.4637808 | -0.8680278 | 1.1899014 | 0.4235542 | 0.7352031 |
| Datsun 710 | 0.4495434 | -1.2248578 | -0.9901821 | -0.7830405 | 0.4739996 | -0.9170046 | 0.4260068 | 1.1160357 | 1.1899014 | 0.4235542 | -1.1221521 |
| Hornet 4 Drive | 0.2172534 | -0.1049878 | 0.2200937 | -0.5350928 | -0.9661175 | -0.0022995 | 0.8904872 | 1.1160357 | -0.8141431 | -0.9318192 | -1.1221521 |
| Hornet Sportabout | -0.2307345 | 1.0148821 | 1.0430812 | 0.4129422 | -0.8351978 | 0.2276543 | -0.4637808 | -0.8680278 | -0.8141431 | -0.9318192 | -0.5030337 |
heatmap(df, scale = "none",
col= colorRampPalette(brewer.pal(10, "Blues"))(256))
## or eventually with color key
heatmap.2(df, scale = "none", col = greenred(100),
trace = "none", density.info = "none")
## With another package
library("pheatmap")
pheatmap(df, cutree_rows = 4, colorRampPalette(brewer.pal(10, "OrRd"))(256))
## An Interactive way
library("d3heatmap")
d3heatmap(scale(mtcars), colors = "Spectral",
k_row = 4, # Number of groups in rows
k_col = 2) # Number of groups in columns
library(dendextend)
# order for rows
Rowv <- mtcars %>% scale %>% dist %>% hclust %>% as.dendrogram %>%
set("branches_k_color", k = 3) %>% set("branches_lwd", 1.2) %>%
ladderize
# Order for columns: We must transpose the data
Colv <- mtcars %>% scale %>% t %>% dist %>% hclust %>% as.dendrogram %>% set("branches_k_color", k = 2, value = c("orange", "blue")) %>% set("branches_lwd", 1.2) %>%
ladderize
heatmap(scale(mtcars), Rowv = Rowv, Colv = Colv, scale = "none")
## with gqplot package
heatmap.2(scale(mtcars), scale = "none", col = greenred(100),
Rowv = Rowv, Colv = Colv,
trace = "none", density.info = "none")
## with d3heatmap
d3heatmap(scale(mtcars), colors = "Spectral",
Rowv = Rowv, Colv = Colv)
Code suggestions come from Alboukadel Kassambara, Practical Guide To Cluster Analysis in R