2012-05-18 17 views
21

Questo deve aver infastidito qualcuno in passato quindi scusami se questo è un duplicato e lo rimuoverò. I colpi sulle leggende quando si utilizza geom_bar possono essere fastidiosi. es .:slash della legenda ggplot

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

Quando uso barre colorate che uso questo lavoro in giro, tracciando le sbarre senza colori primo esempio

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

Tuttavia quando il riempimento è bianco questo lascia una scatola bianca vuota insoddisfacente nella legenda senza un bordo. per esempio.

enter image description here

Ho fissato questo in passato manualmente utilizzando software di grafica, ma ora penso che questo deve essere utile per le persone abbastanza per fare una domanda qui. Possiamo fare ggplot tracciare la legenda solo con il contorno nero ma senza la barra?

+1

Grande domanda +1 –

risposta

13

questo,

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

mi ha dato questo, enter image description here grazie a this site.

Alos, si ottiene lo stesso risultato utilizzando colour anziché fill (si potrebbe sostenere che uno è migliore di).

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: Nelle versioni moderne di ggplot2 opts è stata ritirata e sostituita con theme e theme_rect è stato sostituito da element_rect.

+2

'opts (legend.key = theme_rect' è così semplice! –

+0

@ user1317221_G, questa è la bellezza di questo –

+0

Sono in piedi corretti +1 –

3

No, questo è ciò che gli dà il contorno. Se usi un grigio invece che bianco (con il tuo trucco) è più distinguibile. Puoi anche aggiungere il colore di sfondo alla legenda per renderla più distinguibile e mantenerla bianca. Vedere in fondo a questa pagina per maggiori dettagli:

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

Vorrei che ci fosse un modo meno hacker per fare questo.

+0

Credo che la soluzione nel libro di cucina sia più generale. Questa domanda riguarda più il problema di legend.key che rimuovere le barre. – marbel

+2

@Martin stai rispondendo a un post che ha più di un anno, quindi un po 'è cambiato da allora incluso il ricettario. Inoltre ha tutto a che fare con la rimozione delle barre. Vedi il titolo della domanda e il contenuto. Al momento tutte le cose leggendarie di fantasia non esistevano o erano appena state introdotte (ggplot2 0.9.0). –

+1

Capisco che il post è vecchio, il fatto è che ho dovuto affrontare questo stesso problema e il libro di cucina mi ha dato una risposta più generale. Voglio dire, ho seguito il tuo link e mi ha aiutato più della risposta accettata. – marbel

Problemi correlati