2012-03-26 109 views
9

¡Otra pregunta de la leyenda ggplot!eliminando una leyenda de capa en ggplot

que tienen un conjunto de datos de la forma

test <- data.frame(
    cond = factor(rep(c("A", "B"), each=200)), 
    value = c(rnorm(200), rnorm(200, mean=0.8)) 
) 

Así que dos grupos y algunos valores y quiero trazar la densidad. También quiero añadir una línea que indica la media de cada grupo a la trama, así que:

test.cdf <- ddply(test, .(cond), summarise, value.mean=mean(value)) 

Luego, en la llamada ggplot:

ggplot(test, aes(value, fill=cond)) + 
    geom_density(alpha=0.5) + 
    labs(x='Energy', y='Density', fill='Group') + 
    opts(
    panel.background=theme_blank(), 
    panel.grid.major=theme_blank(), 
    panel.grid.minor=theme_blank(), 
    panel.border=theme_blank(), 
    axis.line=theme_segment() 
) + 
    geom_vline(data=test.cdf, aes(xintercept=value.mean, colour=cond), 
    linetype='dashed', size=1) 

Si ejecuta el código anterior, se obtiene una leyenda que indica cada grupo, pero también uno para el indicador medio vline. Mi pregunta es ¿cómo puedo deshacerme de la leyenda del geom_vline()?

+1

Ha correlacionado 'cond' con un relleno y con un color. Eliminar una de estas asignaciones debería resolver el problema. – Andrie

+0

¿Me sirve alguna vez la respuesta? –

Respuesta

15

Dependiendo de la versión de ggplot2 que esté utilizando, obtendrá este problema. Usando ggplot2 vs 0.9.0 en R2.14.1 consigo este gráfico:

enter image description here

que no incluye la leyenda para la vline. En esta versión de ggplot2 se puede ajustar la aparición de la leyenda utilizando show_guide:

ggplot(test, aes(value, fill=cond)) + 
    geom_density(alpha=0.5) + 
    labs(x='Energy', y='Density', fill='Group') + 
    opts(
    panel.background=theme_blank(), 
    panel.grid.major=theme_blank(), 
    panel.grid.minor=theme_blank(), 
    panel.border=theme_blank(), 
    axis.line=theme_segment() 
) + 
    geom_vline(data=test.cdf, aes(xintercept=value.mean, colour=cond), 
    linetype='dashed', size=1, show_guide = TRUE) 

enter image description here

que reproduce su problema. Predeterminado, show_guide = FALSE. En versiones anteriores, puede agregar legend = FALSE a geom_vline para omitir la leyenda. Añadiendo legend = FALSE sigue funcionando todavía funciona en la versión actual, pero lanza una advertencia:

Warning message: 
In get(x, envir = this, inherits = inh)(this, ...) : 
    "legend" argument in geom_XXX and stat_XXX is deprecated. Use show_guide = TRUE or show_guide = FALSE for display or suppress the guide display. 

recomendaría actualizar ggplot2.

+0

Gracias @Paul ... Actualizando ggplot habilitado el indicador 'show_guide' que hace lo que quiero. Aclamaciones. – Hassantm

+1

A partir de ggplot 2.0.0: 'show_guide' ha quedado en desuso. Por favor usa 'show.legend' en su lugar. –

Cuestiones relacionadas