2010-11-13 28 views
3

En utilisant ce code fictif enregistré dans un fichier nommé foo.txt ...Extrait les informations de couleur de ggplot2?

COG,station1,station2,station3,station4,station5 
COG000Z,0.019393497,0.183122497,0.089911227,0.283250444,0.074110521 
COG0002,0.044632051,0.019118032,0.034625785,0.069892277,0.034073709 
COG0001,0.033066112,0,0,0,0 
COG0004,0.115086472,0.098805295,0.148167492,0.040019101,0.043982814 
COG0005,0.064613057,0.03924007,0.105262559,0.076839235,0.031070155 
COG0006,0.079920475,0.188586049,0.123607421,0.27101229,0.274806929 
COG0007,0.051727492,0.066311584,0.080655401,0.027024185,0.059156417 
COG0008,0.126254841,0.108478559,0.139106704,0.056430812,0.099823028 

J'ai fait une heatmap en ggplot2 avec le code d'accompagnement de following this answer on stackexchange.

> library(ggplot2) 
> foo = read.table('foo.txt', header=T, sep=',') 
> foomelt = melt(foo) 
Using COG as id variables 
> ggplot(foomelt, aes(x=COG, y=variable, fill=value)) + geom_tile() + scale_fill_gradient(low='white', high='steelblue') 

Il produit un heatmap vraiment sympa, mais je suis vraiment juste après les codes couleurs de chaque tuile (essentiellement le foo d'origine, mais avec des codes de couleur en place de chaque variable). Une idée de comment s'y prendre?

Répondre

3

Plutôt que d'extraire les couleurs de l'intrigue, utilisez colorRampPalette:

a<-colorRampPalette(c("white","steelblue")) 
plot_colours<-a(n) 

n est le nombre de couleurs dans votre carte de chaleur. Dans votre exemple, je reçois n=6 donc:

n<-6 
a(n) 

retours

[1] "#FFFFFF" "#DAE6F0" "#B4CDE1" "#90B3D2" "#6A9BC3" "#4682B4" 

et

image(1:n,1,as.matrix(1:n),col=a(n)) 

retours

color-ramp

+0

J'ai fini par utiliser colorRampPalette et un tri Python pour remplacer les valeurs par des couleurs. Merci. – zachwill

6

Je suis wor roi sur l'extraction de tout le code lié à l'échelle de ggplot2 dans un paquet séparé - cela rendra beaucoup plus facile d'utiliser les mêmes échelles de différentes manières. Voir https://github.com/hadley/scales pour le code en cours.

+0

Merci pour l'info sur les échelles. Je vais certainement y jeter un coup d'œil. – zachwill