J'ai lu le manuel d'aide de heatmap.2 à plusieurs reprises maintenant, et également dans divers didacticiels en ligne, je n'ai pas lu comment déplacer la clé de couleur vers une position différente. Maintenant, je me demande si c'est même possible?
La touche de couleur est dans le coin supérieur gauche par défaut si vous utilisez la fonction heatmap.2 du package gplots.
La position de chaque élément dans le tracé heatmap.2
Peut être contrôlée à l'aide des paramètres lmat
, lhei
et lwid
. Ceux-ci sont passés par heatmap.2
À la commande layout
en tant que:
layout(mat = lmat, widths = lwid, heights = lhei)
lmat
est une matrice décrivant la façon dont l'écran doit être divisé. Par défaut, heatmap.2 divise l'écran en une grille à quatre éléments, donc lmat
est une matrice 2x2. Le nombre dans chaque élément de la matrice décrit l'ordre dans lequel tracer les quatre tracés suivants. Heatmap.2 trace ses éléments dans l'ordre suivant:
donc le lmat
par défaut est:
> rbind(4:3,2:1)
[,1] [,2]
[1,] 4 3
[2,] 2 1
Si, par exemple, vous souhaitez placer la clé sous la carte thermique, vous devez spécifier:
> lmat = rbind(c(0,3),c(2,1),c(0,4))
> lmat
[,1] [,2]
[1,] 0 3
[2,] 2 1
[3,] 0 4
lwid
et lhei
sont des vecteurs qui spécifient la hauteur et la largeur de chaque ligne et colonne. La valeur par défaut est c(1.5,4)
pour les deux. Si vous modifiez lmat
, vous devrez ou devrez probablement également les modifier. Pour l'exemple ci-dessus, si nous voulons conserver tous les autres éléments de la même taille, mais voulons une touche de couleur fine en bas, nous pouvons définir
>lwid = c(1.5,4)
>lhei = c(1.5,4,1)
Nous sommes alors prêts à tracer la carte thermique:
>heatmap.2(x,...,lmat = lmat, lwid = lwid, lhei = lhei)
Cela tracera une carte thermique avec le dendrogramme de colonne au-dessus de la carte thermique, le dendrogramme de ligne à gauche et la clé en dessous. Malheureusement, les en-têtes et les étiquettes de la clé sont codés en dur.
voir ?layout
pour plus de détails sur le fonctionnement de layout
.
Il existe des régions spécifiées définies par des appels par dans le code assez long pour heatmap.2
et je n'ai pas vu son auteur d'origine ni aucun des "réviseurs" autour de ces parties, bien qu'ils visitent parfois sur R-help. Les dimensions principales du tracé sont définies par le vecteur à 2 éléments margins
. Voici quelques endroits où vous devrez peut-être apporter des modifications:
#1)
if (!missing(RowSideColors)) {
par(mar = c(margins[1], 0, 0, 0.5))
image(rbind(1:nr), col = RowSideColors[rowInd], axes = FALSE)
#2)
if (!missing(ColSideColors)) {
par(mar = c(0.5, 0, 0, margins[2]))
image(cbind(1:nc), col = ColSideColors[colInd], axes = FALSE)
#3)
par(mar = c(margins[1], 0, 0, margins[2]))
#4)
par(mar = c(margins[1], 0, 0, 0))
#5)
par(mar = c(0, 0, if (!is.null(main)) 5 else 0, margins[2]))
#6
if (key) {
par(mar = c(5, 4, 2, 1), cex = 0.75)