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.[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]
[editovat | editovat zdroj]- 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í
[editovat | editovat zdroj]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
[editovat | editovat zdroj]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].
Volání funkce heatmap
[editovat | editovat zdroj]Normalizace dat
[editovat | editovat zdroj]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
[editovat | editovat zdroj]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
[editovat | editovat zdroj]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]
[editovat | editovat zdroj]- terrain.color()
- rainbow()
- heat.colors()
- topo.colors()
- cm.colors()
Název teplotní mapy a popis os
[editovat | editovat zdroj]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
[editovat | editovat zdroj]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
[editovat | editovat zdroj]- ↑ 1,0 1,1 1,2 heatmap function | R Documentation. www.rdocumentation.org [online]. [cit. 2021-02-07]. Dostupné online.
- ↑ 2,0 2,1 2,2 Datanovia [online]. [Cit. 2021-02-07]. Dostupné online. (en-US)
- ↑ HOLTZ, Yan. Heatmap | the R Graph Gallery. r-graph-gallery.com [online]. [cit. 2021-02-07]. Dostupné online. (en)
- ↑ HOLTZ, Yan. Building heatmap with R. www.r-graph-gallery.com [online]. [cit. 2021-02-07]. Dostupné online. (en)
- ↑ 5,0 5,1 5,2 5,3 HOLTZ, Yan. Building heatmap with R. www.r-graph-gallery.com [online]. [cit. 2021-02-07]. Dostupné online. (en)
- ↑ 6,0 6,1 HOLTZ, Yan. R Color Brewer’s palettes. www.r-graph-gallery.com [online]. [cit. 2021-02-07]. Dostupné online. (en)
Literatura
[editovat | editovat zdroj]- 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