2012-05-18 18 views
21

Esto debe haber molestado a alguien en el pasado así que disculpe si este es un duplicado y lo eliminaré. Las barras en las leyendas cuando se usa geom_bar pueden ser molestas. ej .:leyenda ggplot barras

x <- c("a","b") 
y <- c(1,2) 
df <- as.data.frame(cbind(x,y)) 
a <- ggplot(df,aes(x=x,y=y,fill=x)) 
a + geom_bar(colour="black") + scale_fill_manual(values=c("white", "black")) 

enter image description here

Cuando uso barras de colores que utilizo este trabajo alrededor, trazando bares sin colores primer ejemplo

a + geom_bar() + geom_bar(colour="black",show_guide=FALSE) + 
scale_fill_manual(values=c("white", "black")) 

Sin embargo, cuando el relleno es blanco, deja una caja blanca vacía insatisfactoria en la leyenda sin borde. p.ej.

enter image description here

he fijado esto en el pasado manualmente usando el software de gráficos, pero ahora creo que esto debe ser de utilidad para gente suficiente para hacer una pregunta aquí. ¿Podemos hacer que ggplot trace la leyenda con el contorno negro solamente pero sin la barra?

+1

Gran pregunta +1 –

Respuesta

13

esto,

a + geom_bar() + geom_bar(colour="black",show_guide=FALSE) + 
scale_fill_manual(values=c("white", "black")) + 
opts(legend.key = theme_rect(fill = 'black')) 

me dio esto, enter image description here gracias a this site.

Alos, obtiene el mismo resultado usando colour en lugar de fill (se podría argumentar que uno es mejor que).

a + geom_bar() + geom_bar(colour="black",show_guide=FALSE) + 
scale_fill_manual(values=c("white", "black")) + 
opts(legend.key = theme_rect(colour = 'black')) 

Nota importante: En las versiones modernas de ggplot2 opts ha quedado en desuso y se reemplaza con theme y theme_rect ha sido sustituido por element_rect.

+2

'opts (legend.key = theme_rect' es tan simple! –

+0

@ user1317221_G, esa es la belleza de ello. –

+0

Con mucho gusto me quedo corregido +1 –

3

No, eso es lo que le da su contorno. Si usa un gris en lugar de blanco (con su truco) es más distinguible. También puede agregar color de fondo a la leyenda para que sea más distinguible y mantenerlo en blanco. Ver la parte inferior de esta página para más detalles:

http://wiki.stdout.org/rcookbook/Graphs/Legends%20(ggplot2)/

Me gustaría que hubiera una manera menos hacker para hacer esto.

+0

Creo que la solución en el libro de cocina es más general. Esta pregunta trata más sobre el tema de legend.key que sobre quitar las barras. – marbel

+2

@Martin está respondiendo a una publicación que tiene más de un año, por lo que ha cambiado un poco desde entonces, incluido el libro de cocina. También tiene todo que ver con eliminar las barras. Vea el título de la pregunta y el contenido. En ese momento, todas las cosas de la leyenda elegante no existían o simplemente se habían introducido (ggplot2 0.9.0). –

+1

Entiendo que la publicación es antigua, el problema es que tuve que lidiar con este mismo problema y el libro de cocina me dio una respuesta más general. Quiero decir, seguí tu enlace y me ayudó más que la respuesta aceptada. – marbel

Cuestiones relacionadas