2012-04-19 25 views
9

Estoy interesado en crear un mapa de calor con geom_tile en ggplot2 que usa un gradiente de color diferente basado en un factor.mapa de calor geom_tile con diferentes colores de relleno alto según el factor

El siguiente diagrama crea la gráfica donde las fichas individuales son de color azul o rojo según el xy_type, pero no hay gradiente.

ggplot() + 
    geom_tile(data=mydata, aes(x=factor(myx), y=myy, fill=factor(xy_type))) + 
    scale_fill_manual(values=c("blue", "red")) 

La trama de abajo no utiliza el factor xy_type para elegir el color, pero me da un gradiente único grupo en función de la xy_avg_value.

ggplot() + 
    geom_tile(data=mydata, aes(x=factor(myx), y=myy, fill=xy_avg_value)) 

¿Existe alguna técnica para combinar estos dos trazados? Puedo usar un facet_grid(xy_type ~ .) para crear gráficos separados de estos datos, con el degradado. Como en última instancia, este va a ser un mapa (coordenadas x ~ y), me gustaría encontrar una manera de mostrar los diferentes degradados juntos en un solo mapa geom_tile.

Respuesta

16

En general, ggplot2 no permite escalas múltiples de un solo tipo (es decir, escalas de color o relleno múltiples), por lo que sospecho que esto no es (fácilmente) posible.

La mejor aproximación más cercana que puedo llegar a es la siguiente:

df <- data.frame(expand.grid(1:5,1:5)) 
df$z <- runif(nrow(df)) 
df$grp <- rep(letters[1:2],length.out = nrow(df)) 

ggplot(df,aes(x = Var1,y = Var2,fill = factor(grp),alpha = z)) + 
    geom_tile() + 
    scale_fill_manual(values = c('red','blue')) 

enter image description here

Pero va a ser difícil conseguir una leyenda sensata.

+0

Eso resuelve el problema perfectamente para mi uso. La doble leyenda es bastante fácil de leer en mi aplicación. ¡Gracias por la ayuda! – Michael

Cuestiones relacionadas