59 votos

¿Cómo puedo cambiar el título de una leyenda en ggplot2?

Tengo un gráfico que estoy haciendo en ggplot2 para resumir datos que son de un conjunto de datos de 2 x 4 x 3 celdas. He podido hacer paneles para la variable de 2 niveles usando facet_grid(. ~ Age) y para fijar los ejes x e y utilizando aes(x=4leveledVariable, y=DV) . Utilicé aes(group=3leveledvariable, lty=3leveledvariable) para producir la trama hasta ahora. Esto me da una visualización con paneles de la variable de 2 niveles, con el eje X representando la variable de 4 niveles y diferentes líneas trazadas dentro de los paneles para la variable de 3 niveles. Pero la clave para la variable de 3 niveles está titulada con el nombre de la variable de 3 niveles y quiero que sea un título que tenga un espacio de caracteres. ¿Cómo puedo cambiar el título de la leyenda?

Cosas que he probado que no parecen funcionar (donde abp es mi objeto ggplot2):

 abp <- abp + opts(legend.title="Town Name")
 abp <- abp + scale_fill_continuous("Town Name")
 abp <- abp + opts(group="Town Name")
 abp <- abp + opts(legend.title="Town Name")

Ejemplo de datos:

ex.data <- data.frame(DV=rnorm(2*4*3), V2=rep(1:2,each=4*3), V4=rep(1:4,each=3), V3=1:3)

39voto

Mohit Jain Puntos 412

Puede cambiar el título de la leyenda modificando la escala de esa leyenda. Este es un ejemplo que utiliza el conjunto de datos de CO2

library(ggplot2)

p <- qplot(conc, uptake, data = CO2, colour = Type) + scale_colour_discrete(name = "Fancy Title")
p <- p + facet_grid(. ~ Treatment)
p 

EDITAR:

Utilizando los datos de ejemplo de arriba, aquí está una solución de trabajo. Creo que esto imita la trama que @drknexus está tratando de crear. Como nota al margen, si alguien puede explicar por qué tenemos que tratar V3 como un factor para que se asigna a la leyenda, lo agradecería.

p <- qplot(V4, DV, data = ex.data, geom = "line", group = V3, lty = factor(V3)) 
p <- p + scale_linetype_discrete(name = "Fancy Title") + facet_grid(. ~ V2)
p 

alt text

27voto

kosaidpo Puntos 79

Otra opción es utilizar

p + labs(aesthetic='custom text')     

Por ejemplo, el ejemplo de Chase sería así:

library(ggplot2)

ex.data <- data.frame(DV=rnorm(2*4*3),V2=rep(1:2,each=4*3),V4=rep(1:4,each=3),V3=1:3)
p <- qplot(V4, DV, data=ex.data, geom="line", group=V3, linetype=factor(V3)) + facet_grid(. ~ V2)
p + labs(linetype='custom title')

y se obtiene la cifra: enter image description here

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X