J'ai des données qui ressemblent à ceci: Remarque dans ces données (et la réelle) Il n'y a pas de valeurs négatives et les valeurs positives
Peut être aussi grand que 100 ou plus. P> Ce que je veux faire est de tracer la carte de la chaleur avec ma propre échelle de couleur assignée et mon schéma: P> également sans utiliser de transformation de la mise à l'échelle de données ou du score Z intégré.
Comment puis-je atteindre cela? P> Mon code actuel est le suivant: p>
library(gplots)
# Read data
dat <- read.table("http://dpaste.com/1501148/plain/",sep="\t",header=T);
rownames(dat) <- dat$Name
dat <- dat[,!names(dat) %in% c("Name")]
# Clustering and distance measure functions
hclustfunc <- function(x) hclust(x, method="complete")
distfunc <- function(x) dist(x,method="maximum")
# Define colours
hmcols <- rev(redgreen(2750));
# Plot
pdf("~/Desktop/tmp.pdf",height=10)
heatmap.2(as.matrix(dat),Colv=FALSE,dendrogram="row",scale="row",col=hmcols,trace="none", margin=c(5,10), hclust=hclustfunc,distfun=distfunc,lwid=c(1.5,2.0),keysize=1);
dev.off()
3 Réponses :
Je pense qu'il y a deux choses ici. Le premier est de savoir comment se débarrasser des scores Z. Cela peut être fait avec le paramètre L'autre question entoure votre dégradé souhaité. J'ai compenté sur échelle = "Aucun" code> sur
Heatmap.2 code>.
colorrampalette code> pour cette partie. Ci-dessous, je construisai un gradient qui va blanc -> vert -> noir pour les valeurs 0 à 1, puis va noir -> rouge pour les valeurs 1 ->
max (dat) code>. P>
library(gplots)
# Read data
dat <- read.table("http://dpaste.com/1501148/plain/",sep="\t",header=T);
rownames(dat) <- dat$Name
dat <- dat[,!names(dat) %in% c("Name")]
# Clustering and distance measure functions
hclustfunc <- function(x) hclust(x, method="complete")
distfunc <- function(x) dist(x,method="maximum")
# Define colours
colfunc1 <- colorRampPalette(c("white", "green", "black"))
colfunc2 <- colorRampPalette(c("black", "red"))
hmcols <- c(colfunc1(200), colfunc2(200*(max(dat) - 1)))
# Plot
pdf("~/Desktop/tmp.pdf",height=10)
heatmap.2(as.matrix(dat),Colv=FALSE,dendrogram="row",scale="none",col=hmcols,trace="none", margin=c(5,10), hclust=hclustfunc,distfun=distfunc,lwid=c(1.5,2.0),keysize=1);
dev.off()
La clé ici est de comprendre que Jetez un coup d'œil au code et la figure ci-dessous pour voir ce que je veux dire. p> p> Comme vous pouvez le constater, il doit y avoir p> Une autre alternative serait d'avoir deux gradients: green-> noir et noir-> rouge. Ensuite, vous pouvez définir manuellement les valeurs zéro sur blanc en les faisant heatmap.2 code> utilise l'argument
Col code> en combinaison avec le
casse code> argument.
n-1 code> couleurs pour
n code> pauses. Pour votre question particulière, le problème est de cartographier les couleurs correctes aux pauses. J'utilise l'option
échelle = "Aucun" code> car @josilber a souligné. P>
na code> et réglage
na.Color = "blanc" code>. P>
dat[dat==0] = NA
heatmap.2( as.matrix(log2(dat)), col=greenred(100),
scale="none", na.color="grey",symbreaks=TRUE,
Colv=FALSE,dendrogram="row",trace="none",
margin=c(5,10), hclust=hclustfunc,distfun=distfunc,lwid=c(1.5,2.0))
Le thème principal ici est de définir des pauses et des couleurs spécifiques pour chaque pause. Cela peut être réalisé en utilisant la fonction HeatMap.2.
Veuillez nettoyer la question et supprimer des pièces inutiles, il est difficile de le comprendre maintenant.