2009-10-15 12 views
10

Tengo algunos datos para los cuales, en un nivel de un factor, hay una correlación significativa. En el otro nivel, no hay ninguno. Trazar estos lado a lado es simple. Agregar una línea a ambos con stat_smooth, también sencillo. Sin embargo, no quiero que se muestre la línea o su relleno en una de las dos facetas. ¿Hay una manera simple de hacer esto? Tal vez especificando un color en blanco para el relleno y el color de una de las líneas de alguna manera?Agregando stat_smooth a solo 1 faceta en ggplot2

Respuesta

28

No pensar en coger una faceta, piense el suministro de un subconjunto de sus datos a stat_smooth:

ggplot(df, aes(x, y)) + 
    geom_point() + 
    geom_smooth(data = subset(df, z =="a")) + 
    facet_wrap(~ z) 
3

Por supuesto, más tarde respondí mi propia pregunta. Aunque, ¿hay una forma menos hack-y para hacer esto? Me pregunto si uno podría incluso adaptar diferentes funciones a diferentes paneles.

Una técnica es usar + scale_fill_manual y scale_colour_manual. Permiten especificar los colores que se utilizarán. Entonces, en este caso, supongamos que tiene

a<-qplot(x, y, facets=~z)+stat_smooth(method="lm", aes(colour=z, fill=z)) 

Puede especificar los colores para el relleno y el color usando lo siguiente. Tenga en cuenta que el segundo color es claro, ya que está utilizando un valor hexadecimal con los dos últimos números que representan la transparencia. Entonces, 00 = claro.

a+stat_fill_manual(values=c("grey", "#11111100"))+scale_colour_manual(values=c("blue", "#11111100")) 
+0

Eso suena como una solución razonable. En general, si está utilizando facetas, realmente quiere poner lo mismo en cada faceta. Si no lo hace, es mejor que utilice enfoques alternativos. Consulte esta pregunta (y mi respuesta) para obtener más información: http://stackoverflow.com/questions/1532535/showing-multiple-axis-labels-using-ggplot2-with-facetwrap-in-r – Harlan

Cuestiones relacionadas