web-dev-qa-db-fra.com

Déplacement de la clé de couleur dans R heatmap.2 (fonction du package gplots)

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.

29
user2015601

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:

  1. Carte de chaleur,
  2. Dendrogramme en ligne,
  3. Dendrogramme sur colonne,
  4. Clé

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.

66
Ian Sudbery

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)
1
42-