2011-08-02 18 views
26

Tengo dos leyendas en mi ggplot con dos títulos de leyenda diferentes (creados automáticamente a partir del ggplot()). Ahora, quiero cambiar estos títulos de leyenda. + labs(colour = "legend name") solo cambia el título de la segunda leyenda. ¿Cómo puedo cambiar el primero también?cambiar ambos títulos de leyenda en un ggplot con dos leyendas

datos de la muestra:

dataset <- structure(list(date = structure(c(1264572000, 1266202800, 1277362800), 
class = c("POSIXt", "POSIXct"), tzone = ""), 
x1 = c(-0.00183760994446658, 0.00089738603087497, 0.000423513598318936), 
x2 = c("approach x","approach y","approach z"), 
x3 = c("Type1", "Type1", "Type2")) , 
.Names = c("date", "data","code","type"), 
row.names = c("1", "2", "3"), class = "data.frame") 

Aquí está mi código para producir la trama:

p <- ggplot(dataset, aes(x=date, y=data)) + 
geom_point(aes(shape = factor(type), color = code)) + 
scale_shape_manual(value=c(23,15)) 
print(p) 

Los títulos leyenda están por defecto: "los factores (tipo de)" y "código": enter image description here

+1

Usted no proporciona datos de la muestra, lo que resulta en código no reproducible. Será mucho más fácil ayudarle si proporciona datos de muestra y códigos que podamos reproducir. – Andrie

Respuesta

45

Aquí se muestra un ejemplo usando el conjunto de datos iris:

data(iris) 
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) + 
    geom_point(aes(shape=Species, colour=Petal.Width)) + 
    scale_colour_gradient() + 
    labs(shape="Species label", colour="Petal width label") 

especifica las etiquetas usando labs(), con cada escala especificada por separado, es decir labs(shape="Species label", colour="Petal width label").

enter image description here

+2

Puede especificar los laboratorios en via scale() también ggplot (iris, aes (x = Sepal.Length, y = Sepal.Width)) + geom_point (aes (forma = Especie, color = Petal.Width)) + scale_colour_gradient ("Etiqueta de ancho de pétalo") + scale_shape ("Etiqueta de especie") – Thierry

+0

Gracias. Está funcionando. Tengo otra pregunta: tengo muchas entradas en ** código ** (ver mi ejemplo), así que en la trama hay muchos colores. Ahora, por ejemplo, quiero el color solo "approach z" black, y dejar el otro sin cambios (se colorean automáticamente). Para esto, el siguiente código no funciona: '+ scale_colour_manual (values ​​= c (" approach z "=" black "))' – Atticus

+0

@pmuench Eche un vistazo a los ejemplos en la documentación de 'scale_manual' en http://had.co.nz/ggplot2/scale_manual.html – Andrie

9

Si entendí su punto correctamente, puede simplemente usar + labs(shape = "shape legend title", colour = "colour legend title")

Cuestiones relacionadas