2015-10-28 20 views
5

Quindi questo è il mio codice per il mio ggplot. Come faccio a modificare più facilmente il titolo della legenda? So che posso semplicemente modificare la variabile gg_group in my_title <- c(rep("train",10), rep("validation", 10)). Ma voglio solo cambiare il titolo in "whatever I want" senza modificare alcuna variabile.Cambia il titolo della legenda ggplot

library(ggplot2) 
y <- c(rnorm(10,1), rnorm(10,3)) 
x <- rep(seq(1,10,1),2) 
gg_group <- c(rep("train",10), rep("validation", 10)) 

gg_data <- data.frame(y=y, x=x, gg_group=gg_group) 

p <- ggplot(gg_data, aes(x=x, y=y, group=gg_group)) 
p + geom_line(aes(colour=gg_group)) 

Ho anche provato questo codice:

p + geom_line(aes(colour=gg_group)) + scale_shape_discrete(name="Dataset",labels=c("Train", "Validation"))

Ma questo non funziona. * Modifica, controlla l'ottimo snwer di Jaap e Jason Aizkalns.

+2

si potrebbe desiderare di usare 'scale_color_discrete' – Jaap

risposta

1

Il motivo per cui non funziona è perché non è stato utilizzato un shape nel codice ggplot. Invece si dovrebbe usare scale_color_discrete come segue:

scale_color_discrete("Dataset") 
5

@Jaap è corretto. Se si utilizza scale_color_discrete, è possibile modificare il nome della legenda con il nome e non è necessario passare alcun argomento a labels poiché assumeranno i nomi definiti nell'estetica colour. Questo è prendere in considerazione le differenze tra:

p + geom_line(aes(colour = gg_group)) + 
    scale_color_discrete(name = "Dataset") 

e

p + geom_line(aes(colour = gg_group)) + 
    scale_color_discrete(name = "Dataset", 
         labels = c("New Label 01", "New Label 02"))