scale_fill_discrete manually guides ggplot custom change r ggplot2

manually - ggplot legends-cambiar etiquetas, orden y título



scale_fill_discrete (1)

Tienes que hacer dos cosas:

  1. Cambiar el nombre y reordenar los niveles de factor antes de la trama
  2. Cambia el nombre del título de cada leyenda al mismo título

El código:

dtt$model <- factor(dtt$model, levels=c("mb", "ma", "mc"), labels=c("MBB", "MAA", "MCC")) library(ggplot2) ggplot(dtt, aes(x=year, y=V, group = model, colour = model, ymin = lower, ymax = upper)) + geom_ribbon(alpha = 0.35, linetype=0)+ geom_line(aes(linetype=model), size = 1) + geom_point(aes(shape=model), size=4) + theme(legend.position=c(.6,0.8)) + theme(legend.background = element_rect(colour = ''black'', fill = ''grey90'', size = 1, linetype=''solid'')) + scale_linetype_discrete("Model 1") + scale_shape_discrete("Model 1") + scale_colour_discrete("Model 1")

Sin embargo, creo que esto es realmente feo y difícil de interpretar. Es mucho mejor usar facetas:

ggplot(dtt, aes(x=year, y=V, group = model, colour = model, ymin = lower, ymax = upper)) + geom_ribbon(alpha=0.2, colour=NA)+ geom_line() + geom_point() + facet_wrap(~model)

Estoy luchando mucho para modificar la leyenda en mi argumento. Aquí hay un ejemplo reproducible:

dtt <- structure(list(model = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("ma", "mb", "mc"), class = "factor"), year = c(2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L), V = c(0.16, 0.14, 0.11, 0.13, 0.15, 0.16, 0.24, 0.17, 0.12, 0.13, 0.15, 0.15, 0.2, 0.16, 0.11, 0.12, 0.12, 0.15), lower = c(0.11, 0.11, 0.07, 0.09, 0.11, 0.12, 0.16, 0.12, 0.04, 0.09, 0.09, 0.11, 0.14, 0.1, 0.07, 0.08, 0.05, 0.1), upper = c(0.21, 0.19, 0.17, 0.17, 0.19, 0.2, 0.29, 0.23, 0.16, 0.17, 0.16, 0.2, 0.26, 0.27, 0.15, 0.16, 0.15, 0.19)), .Names = c("model", "year", "V", "lower", "upper"), class = "data.frame", row.names = c(NA, -18L))

Mi trama se genera así:

ggplot(dtt, aes(x=year, y=V, group = model, colour = model, ymin = lower, ymax = upper)) + geom_ribbon(alpha = 0.35, linetype=0)+ geom_line(aes(linetype=model), size = 1.5) + geom_point(aes(shape=model), fill = "white", size = 4) + theme(legend.position=c(.6,0.8)) + theme(legend.background = element_rect(colour = ''black'', fill = ''grey90'', size = 1, linetype=''solid''))

que produce esto:

Ahora, lo que me gustaría hacer es

  1. cambiar el título de la leyenda
  2. cambiar el orden en que aparecen los elementos de la leyenda
  3. cambiar el texto de los elementos de la leyenda.

He jugueteado durante horas tratando de hacer esto, pero sin mucho éxito. Lo mejor que he logrado hasta ahora es agregar esto:

scale_colour_hue(name = "Model 1", breaks=c("mb", "ma", "mc"), labels=c("MBB", "MAA", "MCC"))

Pero produce esta abominación:

Como puede ver, ahora hay una leyenda extra innecesaria, y las formas en la leyenda no coinciden con las de la trama.

Finalmente, me gustaría que los gráficos en la leyenda indiquen que las líneas azul y verde están discontinuas, no son sólidas, pero no tengo ni idea de cómo hacerlo.

Cualquier ayuda sería muy apreciada,