Извлечь информацию о цвете из ggplot2?

Используя этот фиктивный код, сохраненный в файле с именем foo.txt...

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

Я сделал тепловую карту в ggplot2 с сопроводительным кодом из после этого ответа на 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')

Он создает действительно хорошую тепловую карту, но на самом деле мне нужны только цветовые коды каждой плитки (в основном исходный foo, но с цветовыми кодами вместо каждой переменной). Любая идея, как это сделать?


person zachwill    schedule 13.11.2010    source источник


Ответы (2)


Вместо извлечения цветов из графика используйте colorRampPalette:

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

где n — количество цветов на вашей тепловой карте. В вашем примере я получаю n=6 так:

n<-6
a(n)

возвращается

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

а также

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

возвращается

color-ramp

person fideli    schedule 13.11.2010
comment
В итоге я использовал colorRampPalette и некоторую сортировку Python, чтобы заменить значения цветами. Спасибо. - person zachwill; 15.11.2010

Я работаю над переносом всего кода, связанного с масштабом, из ggplot2 в отдельный пакет — это значительно упростит использование одних и тех же масштабов по-разному. См. https://github.com/hadley/scales для текущего кода.

person hadley    schedule 14.11.2010
comment
Спасибо за информацию о весах. Я обязательно посмотрю на это. - person zachwill; 15.11.2010