Teplotní mapa v R
Teplotní mapa je způsob vizualizace dat na základě jejich podobnosti. Jinak řečeno, teplotní mapy využívají barvy a jejich odstíny k vyjádření hierarchického shlukování. Někdy se teplotní mapa také nazývá obrazem falešných barev (anglicky false color image)[1]. Součástí vygenerovaného obrázku může být i dendrogram. Vytvoření teplotní mapy v R (programovací jazyk) lze dosáhnout hned několika příkazy z různých balíčků (anglicky packages). Nicméně, nejjednodušší z teplotních map může být vytvořena již ze základního balíčku obsaženého v R[2]. V tomto článku bude jmenováno několik funkcí, kterými lze vytvořit teplotní mapu a balíčky ve kterých lze tyto funkce najít. K tomu zde bude popsán základní příkaz (funkce heatmap), jak jej použít a jeho různé modifikace.
Přehled funkcí na vytvoření teplotní mapy[2]
- heatmap() [základní funkce, balíček: stats ]: vykreslí základní teplotní mapu
- heatmap.2() [balíček: gplots]: vytvoří vylepšenou teplotní mapu (v porovnání se základní funkcí heatmap())
- pheatmap() [balíček: pheatmap]: umožní vytvořit hezčí teplotní mapu, ve které má uživatel více kontroly nad změnami a vzhledem
- d3heatmap() [balíček: d3heatmap]: vykreslí interaktivní (tzv. "klikací") teplotní mapu
- Heatmap() [balíček z R/Bioconductor: ComplexHeatmap]: vytvoří teplotní mapu, která je především vhodná pro analýzu genomických dat, lze i annotovat a vytvořit i komplexní teplotní mapy
Vyjmenované možnost výše nejsou však jediné, pro vytvoření teplotních map. R je jako otevřený software využívaný mnoha uživateli, kteří sami vytváří balíčky. A tak lze například, vytvořit interaktivní mapu i pomocí balíčku plotly, který dokáže vytvořit interaktivní mapu z teplotní mapy vytvořené pomocí ggplot2[3]. Tedy, d3heatmap není jedinou možností, jak se k takové mapě dostat.
Základní funkce heatmap a její použití
Pro využití příkazu teplotní mapy je potřeba mít data ve formátu matice (anglicky matrix). Pokud jsou data ve formátu tabulky (anglicky data frame), lze transformovat data do formátu matice s pomocí příkazu as.matrix. Tento příkaz však bude fungovat, bude-li tabulka obsahovat pouze číselné proměnné (anglicky numeric variables). [4] Nevýhodou funkce heatmap je, že nelze vložit například legendu k výsledným barvám (anglicky color key). Funkce heatmap vytvoří obrázek o dispozicích 2x2, a proto ji nelze využít ve víceřádkovém (nebo vícesloupovém) rozložení (například když byla zavolána funkce par(mfrow = *) nebo (mfcol = *))[1].
#konverze dat do matice
data <- as.matrix(x)
#funkce heatmap()
heatmap(data)
Popis teplotní mapy
Každé hodnotě se přisoudí barva ze schématu barev, které může být libovolně vybráno (viz níže). V rámci teplotní mapy se přeorganizují sloupce a řádky tak, aby k sobě barevně (tzn. hodnotově) patřily jednotlivé položky. Na základě těchto vztahů pak může být vynesen i dendrogram [1].
Normalizace dat
V případě, že některá data se po základním použití funkce heatmap() zdají neinformativní, lze data normalizovat pomocí argumentu scale. Lze si vybrat, zda normalizovat pomocí řádků (anglicky row), či sloupců (anglicky column).
#normalizace dat podle řádku
heatmap(data, scale="row")
#normalizace dat podle sloupce
heatmap(data, scale="column")
Dendrogram
Při zavolání funkce heatmap, dendrogram bude vygenerován automaticky. Pokud není třeba či je nevhodný, lze jej vynechat a zobrazit pouze samotnou matici za použití argumentů Rowv a Colv. Nedojde v tom případě ani k reorganizaci heatmapy na základě preferovaného shlukování hodnot v rámci řádků nebo sloupců.
#teplotní mapa bez dendogramu nebo reorganizace podle sloupců či řádků
heatmap(data, Colv = NA, Rowv = NA)
Barevné schéma
Barvy teplotní mapy lze měnit třemi způsoby: buď využít barevná schémata již předinstalovaných v R[5], využití barevných schémat pomocí RColorBrewer [6], nebo vyjmenování zvolených barev[2]. Barevná schémata (či barevné palety, anglicky color palettes) se dělí obecně na tři typy: sequenciální (postupná – výhodná například pro zvýrazněný postupu), divergentní (odchylující se – zvýrazňují především průměrné hodnoty, méně výrazné jsou pak hodnoty obou extrémů) a kvalitativní (třídní – vhodná pro data nominální či kategorická)[6].
#barevné schéma předinstalovaná v R, normalizace podle sloupce
heatmap(data, scale = "column", col = terrain.color(256))
#barevné schéma pomocí RColorBrewer, normalizace podle sloupce
library(RColorBrewer)
coul <- colorRampPalette(brewer.pal(8, "PiYG"))(256))
heatmap(data, scale= "column", col= coul)
#barevné schéma pomocí zvolených barev, bez normalizace
col<- colorRampPalette(c("red", "white", "blue"))(256)
heatmap(data, scale = "none", col = col)
Příklad barevných schémat předinstalovaných v R[5]
- terrain.color()
- rainbow()
- heat.colors()
- topo.colors()
- cm.colors()
Název teplotní mapy a popis os
Název teplotní mapy lze přidat argumentem main, popis os pak pomocí argumentů xlab/ylab[5].
#název teplotní mapy, popis os
heatmap(data, xlab = "Nazev_osy_X", ylab = "Nazev_osy_Y", main = "Titulek")
Barvy na okraji teplotní mapy
V případě, že je třeba nějak seskupit dané výsledky z jedné skupiny, které spolu nutně nesouvisejí výslednými hodnotami v teplotní mapě, lze vytvořit další vnější sloupec s barvami pomocí argumentu RowSideColors [5].
# Napriklad: seskupeni podle prvniho pismena
skupina <- as.numeric(as.factor(substr(rownames(data), 1 , 1))) #definice skupiny, podle ceho se pozna
colSide <- brewer.pal(9, "Set1")[skupina] #definice barev pro barvy na okraji
colMain <- colorRampPalette(brewer.pal(8, "Blues"))(25) #definice barev pro teplotni mapu
heatmap(data, RowSideColors = colSide, col = colMain)
Reference
- heatmap function | R Documentation. www.rdocumentation.org [online]. [cit. 2021-02-07]. Dostupné online.
- Datanovia [online]. [cit. 2021-02-07]. Dostupné online. (anglicky)
- HOLTZ, Yan. Heatmap | the R Graph Gallery. r-graph-gallery.com [online]. [cit. 2021-02-07]. Dostupné v archivu pořízeném z originálu dne 2021-03-28. (anglicky)
- HOLTZ, Yan. Building heatmap with R. www.r-graph-gallery.com [online]. [cit. 2021-02-07]. Dostupné online. (anglicky)
- HOLTZ, Yan. Building heatmap with R. www.r-graph-gallery.com [online]. [cit. 2021-02-07]. Dostupné online. (anglicky)
- HOLTZ, Yan. R Color Brewer’s palettes. www.r-graph-gallery.com [online]. [cit. 2021-02-07]. Dostupné online. (anglicky)
Literatura
- https://sebastianraschka.com/Articles/heatmaps_in_r.html – tvorba teplotních map pomocí funkce heatmap.2 z balíčku gplot
- https://jcoliver.github.io/learn-r/006-heatmaps.html – tvorba teplotních map pomoci ggplot balíčku
- https://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/heatmap – popis všech argumentů pro použití heatmap funkce