Cet article décrit comment créer et personnaliser une Heatmap interactive dans R en utilisant le package R heatmaply, qui est basé sur le système ggplot2 et plotly.js.
Sommaire:
- Prérequis
- Préparation des données
- Heatmap basique
- Diviser les dendrogrammes de lignes et de colonnes en k groupes
- Modifier les palettes de couleurs
- Personnaliser les dendrogrammes en utilisant dendextend
- Ajouter une annotation basée sur des facteurs supplémentaires
- Ajouter des annotations de texte
- Ajouter un texte de survol personnalisé
- Enregistrer votre heatmap dans un fichier
- Références
Prérequis
Installez le package R requis:
install.packages("heatmaply")
Charger le package:
library("heatmaply")
Préparation des données
Normaliser les données afin de rendre les valeurs des variables comparables.
df <- normalize(mtcars)
Notez que d’autres fonctions de transformation des données sont scale()
(pour la normalisation standard), percentize()
[pour la transformation en percentile ; disponible dans le package R heatmaply]. Plus d’informations ici : Comment Normaliser et Standardiser les Données dans R pour une Visualisation en Heatmap Magnifique.
Heatmap basique
heatmaply(df)
Heatmaply a également la possibilité de produire une Heatmap statique en utilisant la fonction R ggheatmap
:
ggheatmap(df)
Notez que, heatmaply
utilise le package seriation pour trouver un ordre optimal des lignes et des colonnes.
La fonction heatmaply()
a une option appelée seriate
, dont les valeurs possibles sont:
“OLO”
(Optimal leaf ordering ou Ordre optimal des feuilles en français) : C’est la valeur par défaut.“mean”
: Cette option donne le résultat que nous obtiendrions par défaut des fonctions de Heatmap dans d’autres packages tels quegplots::heatmap.2()
.“none”
: Cette option nous donne les dendrogrammes sans aucune rotation. Le résultat est similaire à celui que nous obtiendrions par défaut avec hclust.
Reproduction de l’ordre des dendrogrammes de gplots::heatmap.2().
- Créer une Heatmap à l’aide du package R
gplots
:
gplots::heatmap.2(
as.matrix(df),
trace = "none",
col = viridis(100),
key = FALSE
)
- Créer une version similaire en utilisant le package R
heatmaply
:
heatmaply(
as.matrix(df),
seriate = "mean",
row_dend_left = TRUE,
plot_method = "plotly"
)
Diviser les dendrogrammes de lignes et de colonnes en k groupes
L’algorithme k-means est utilisé.
heatmaply(
df,
k_col = 2,
k_row = 2
)
Modifier les palettes de couleurs
La palette de couleurs par défaut est la suivante viridis
. D’autres excellentes palettes de couleurs sont disponibles dans les packages cetcolor et RColorBrewer.
Utilisez les couleurs viridis avec l’option “magma”:
heatmaply(
df,
colors = viridis(n = 256, option = "magma"),
k_col = 2,
k_row = 2
)
Utilisez la palette RColorBrewer
:
library(RColorBrewer)
heatmaply(
df,
colors = colorRampPalette(brewer.pal(3, "RdBu"))(256),
k_col = 2,
k_row = 2
)
Spécifiez des gradients de couleurs personnalisées en utilisant la fonction scale_fill_gradient2()
[package ggplot2].
gradient_col <- ggplot2::scale_fill_gradient2(
low = "blue", high = "red",
midpoint = 0.5, limits = c(0, 1)
)
heatmaply(
df,
scale_fill_gradient_fun = gradient_col
)
Personnaliser les dendrogrammes en utilisant dendextend
Un utilisateur peut fournir ses propres dendrogrammes pour les lignes/colonnes de la Heatmap en utilisant les paramètres Rowv
et Colv
:
library(dendextend)
# Créer un dendrogramme pour les lignes
mycols <- c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07")
row_dend <- df %>%
dist() %>%
hclust() %>%
as.dendrogram() %>%
set("branches_lwd", 1) %>%
set("branches_k_color", mycols[1:3], k = 3)
# Créer un dendrogramme pour les colonnes
col_dend <- df %>%
t() %>%
dist() %>%
hclust() %>%
as.dendrogram() %>%
set("branches_lwd", 1) %>%
set("branches_k_color", mycols[1:2], k = 2)
# Visualiser la heatmap
heatmaply(
df,
Rowv = row_dend,
Colv = col_dend
)
Ajouter une annotation basée sur des facteurs supplémentaires
Le code R suivant ajoute une annotation sur les côtés des colonnes et des lignes:
heatmaply(
df[, -c(8, 9)],
col_side_colors = c(rep(0, 5), rep(1, 4)),
row_side_colors = df[, 8:9]
)
Ajouter des annotations de texte
Par défaut, la couleur du texte de chaque cellule est choisie pour assurer la lisibilité, le texte noir étant affiché sur les cellules claires et le texte blanc sur les cellules foncées.
heatmaply(df, cellnote = mtcars)
Ajouter un texte de survol personnalisé
mat <- df
mat[] <- paste("This cell is", rownames(mat))
mat[] <- lapply(colnames(mat), function(colname) {
paste0(mat[, colname], ", ", colname)
})
heatmaply(
df,
custom_hovertext = mat
)
Enregistrer votre heatmap dans un fichier
Créer un fichier html interactif:
dir.create("folder")
heatmaply(mtcars, file = "folder/heatmaply_plot.html")
browseURL("folder/heatmaply_plot.html")
Enregistrement d’un fichier statique (png/jpeg/pdf). Avant d’utiliser ce code pour la première fois, il se peut que vous deviez d’abord executer webshot::install_phantomjs()
ou installer le programme orca de plotly.
dir.create("folder")
heatmaply(mtcars, file = "folder/heatmaply_plot.png")
browseURL("folder/heatmaply_plot.png")
Sauvegarder le fichier, sans le tracer dans la console:
tmp <- heatmaply(mtcars, file = "folder/heatmaply_plot.png")
rm(tmp)
Références
Version: English
bonjour, quelle est le type de fichier utilisé pour les données de toutes les voitures ?