2013-08-26 3 views
1

J'ai chaleur plusieurs cartes similaires à ce qui suit:Comment changer xmax et xmin dans la partie histogramme de heatmap.2 tracé du paquet Gplots R?

X <- matrix(nrow=3, ncol=3) 
X[1,] <- c(0.3, 0.4, 0.45) 
X[2,] <- c(0.3, 0.7, 0.65) 
X[3,] <- c(0.3, 0.4, 0.45) 
colnames(X)<-c(1.5, 3, 4) 
rownames(X)<-c(1.5, 3, 4) 
library(gplots) 

heatmap.2(X, Rowv=NA, Colv=NA, col=rev(heat.colors(256)), 
      sepcolor="black", trace="none",dendrogram="none") 

Maintenant, afin de faire de multiples parcelles de ce genre semblent plus semblables, comment puis-je obtenir l'histogramme supérieur gauche pour aller toujours entre 0 et 1?


Sur la base de la réponse de Yuk je fait cette version:

X <- matrix(nrow=3, ncol=3) 
X[1,] <- c(0.3, 0.4, 0.45) 
X[2,] <- c(0.3, 0.7, 0.65) 
X[3,] <- c(0.3, 0.4, 0.45) 
colnames(X)<-c(1.5, 3, 4) 
rownames(X)<-c(1.5, 3, 4) 
library(gplots) 

colors <- rev(heat.colors(256)) 

colbr <- c(seq(0, 1, len=length(colors)+1)) 
heatmap.2(X, scale="none", col=colors, breaks=colbr, 
      key=T, symkey=F, density.info="histogram", trace="none", Rowv=NA, Colv=NA, 
      sepcolor="black", dendrogram="none") 

Maintenant, l'échelle de couleur va entre 0 et 1 bit l'histogramme ne fonctionne toujours pas. enter image description here

+0

Si vous fixez l'échelle de couleurs, pourquoi vous voulez l'histogramme pour changer? Pour ce faire, vous devez mettre à l'échelle vos données, donc 0.3 devient 0, et 0.7 devient 1. Est-ce que vous voulez? – yuk

+1

Non. J'ai plusieurs graphiques comme celui-ci et j'aimerais que les histogrammes couvrent la même plage dans chacun d'entre eux. Dans l'état actuel des choses, la valeur correspondant à un histogramme-agrafe situé par exemple au milieu de deux de ces histogrammes ne sera pas la même mais dépendra de ce que sont la valeur max et la valeur min dans leurs cartes thermiques respectives. Je veux que ce soit aussi facile que possible de comparer plusieurs graphiques de ce genre. Mais la fixation de l'échelle des couleurs est certainement un pas dans la bonne direction, bien que quelque chose que je n'avais pas inclus dans cet exemple de travail minimal. – jonalv

+0

Ainsi, si vous pouviez définir manuellement l'axe, vous pouviez déterminer le maximum de tous vos ensembles de données et définir votre axe comme étant le même. Serait-ce accomplir ce que vous voulez? – ptpaterson

Répondre

0

Je pense que le meilleur moyen est de définir des sauts de couleur.

Voici ce que je fais habituellement (x est la matrice pour heatmap):

n.col=16 # number of colors 
cm = redblue(n.col) # red-white-blue colormap 
mmx = min(abs(min(x)),abs(max(x))) # find min value, or you can set to a number 
colbr <- c(seq(-mmx/2,mmx/2, len=length(cm)+1)) # vector of symmetric breaks 
heatmap.2(x, scale="none", col=cm, breaks=colbr, 
      key=T, symkey=F, density.info="histogram", trace="none") 
+0

Cela ne répond pas complètement à la question. – jonalv

Questions connexes