2010-11-19 19 views
11

Intuitivamente estoy buscando algo como: facet_(scales="free_color")ggplot2: escala de colores por separado por cada faceta

que hago algo así como

p <- ggplot(mpg, aes(year, displ, color=model)) + facet_wrap(~manufacturer) 
p + geom_jitter() 

Es decir: las mediciones 2D trama de individuos (model) que pertenecen a diferentes especies (manufacturer) facetado por una especie, que indica el individuo por color. El problema es que todas las personas comparten la misma escala de color, por lo que los puntos en una faceta tienen colores muy similares.

Usar la estética de grupo con geom_line resolvería el problema, pero las líneas cuentan una historia diferente a los puntos.

Otra solución obvia sería dejar caer la facetación y dibujar una gráfica separada para cada subconjunto. (Si esta debería ser la única solución: ¿hay alguna forma rápida, inteligente o probada de hacerlo?)

Respuesta

5

No estoy seguro de que esta sea una opción disponible cuando está coloreando por un factor. Sin embargo, una forma rápida para producir las parcelas individuales sería algo como esto:

d_ply(mpg, .(manufacturer), function(df) { 
jpeg(paste(df$manufacturer[[1]], ".jpeg", sep="")) 
plots <- ggplot(df, aes(year, displ, color=factor(model))) + geom_jitter() 
print(plots) 
dev.off() 
}) 

respuestas relacionadas: Different legends and fill colours for facetted ggplot?

+0

Como se mencionó Hadley (en la respuesta que enlace ed) "es fácil trabajar dibujando trazados separados", esto muestra cómo. ¡Gracias! Pero todavía estoy luchando para combinarlos de una manera que coincida con las otras tramas facetas que creé. – ian

+0

¿Podría mostrarnos lo que tiene hasta ahora? ¿Y tratar de describir qué está/no está haciendo juego? –

+0

En realidad, quizás sería mejor hacer una nueva pregunta que muestre lo que tiene actualmente en términos de trama (s) y lo que realmente está buscando. –

2

Creo que simplemente desea colorear por clase, donde cada fabricante hace varios modelos, cada uno sólo uno o dos por clase:

p <- ggplot(mpg, aes(year, displ, color=class)) + facet_wrap(~ manufacturer) 
p + geom_jitter() 

alt text

+1

El conjunto de datos 'mpg' era solo un ejemplo. Quiero graficar los gradientes de densidad ('x' vs' y') de árbol ('color' o' group') muestras por especie ('faceta'). Cada árbol individual pertenece a una sola especie. – ian

Cuestiones relacionadas