2011-10-26 19 views

Respuesta

27

aquí es otro enfoque de subconjuntos de datos:.

ggplot(mtcars, aes(mpg, disp)) + facet_wrap(~cyl) + 
    geom_point(data = subset(mtcars, cyl == 4)) + 
    geom_line(data = subset(mtcars, cyl == 6)) + 
    geom_text(data = subset(mtcars, cyl == 8), aes(label = gear)) 

enter image description here

+4

puede simplificar el código un poco por el uso de 'subconjunto = (cil == 4)' en lugar de usando la llamada 'data'. – Ramnath

+0

excelente! A menudo me olvido del argumento del subconjunto ... gracias. – kohske

2

He aquí algunos datos de la muestra con 5 grupos (g). Queremos un tipo de geom diferente en la quinta faceta. Observe el truco de crear dos versiones diferentes de la variable y, una para las primeras cuatro facetas y otra para la quinta.

dfr <- data.frame(
    x = rep.int(1:10, 5), 
    y = runif(50), 
    g = gl(5, 10) 
) 
dfr$is.5 <- dfr$g == "5" 
dfr$y.5 <- with(dfr, ifelse(is.5, y, NA)) 
dfr$y.not.5 <- with(dfr, ifelse(is.5, NA, y)) 

Si los diferentes geoms pueden usar la misma estética (como punto y líneas), entonces no es un problema.

(p1 <- ggplot(dfr) + 
    geom_line(aes(x, y.not.5)) + 
    geom_point(aes(x, y.5)) + 
    facet_grid(g ~ .) 
) 

Sin embargo, un diagrama de puntos y un gráfico de barras requieren diferentes facetas, por lo que no funcionan como se esperaba toegther.

(p2 <- ggplot(dfr) + 
    geom_line(aes(x, y.not.5)) + 
    geom_bar(aes(y.5)) + 
    facet_grid(g ~ .) 
) 

En este caso es mejor para dibujar gráficos separados, y quizás ellos se combinan con Viewport.

Cuestiones relacionadas