12
votes

Comment attribuer votre échelle de couleur sur les données brutes dans Heatmap.2 ()

J'ai des données qui ressemblent à ceci: xxx pré>

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>

  1. Lorsque la valeur est 0, réglez-le en blanc. LI>
  2. Lorsque la valeur est == 1, réglez-le en noir. LI>
  3. Lorsque la valeur est> 1, réglez-le en nuance de rouges. Li>
  4. Lorsque la valeur est 0, la définissez à l'ombre de verts. li> ol>

    é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()
    


1 commentaires

Veuillez nettoyer la question et supprimer des pièces inutiles, il est difficile de le comprendre maintenant.


3 Réponses :


4
votes

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 échelle = "Aucun" code> sur Heatmap.2 code>.

L'autre question entoure votre dégradé souhaité. J'ai compenté sur 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()


0 commentaires

11
votes

La clé ici est de comprendre que heatmap.2 code> utilise l'argument Col ​​ code> en combinaison avec le casse code> argument.

Jetez un coup d'œil au code et la figure ci-dessous pour voir ce que je veux dire. p> xxx pré>

Entrez la description de l'image ici p>

Comme vous pouvez le constater, il doit y avoir 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> xxx pré>

 Entrez la description de l'image ici 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 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))


0 commentaires

3
votes

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. xxx


0 commentaires