legendas ggplot – alterar labels, pedido e título

Estou lutando muito para modificar a lenda do meu enredo. Aqui está um exemplo reproduzível:

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)) 

Meu enredo é gerado assim:

 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 produz isso: insira a descrição da imagem aqui

Agora, o que eu gostaria de fazer é

  1. mude o título da legenda
  2. alterar a ordem em que os itens da legenda aparecem
  3. mude o texto dos itens da legenda.

Eu brinquei por horas tentando fazer isso, mas sem muito sucesso. O melhor que consegui até agora é adicionar isto:

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

Mas produz essa abominação: insira a descrição da imagem aqui

Como você vê, agora existe uma legenda extra desnecessária, e as formas na legenda não correspondem àquelas na trama!

Finalmente, eu gostaria de charts na legenda para indicar que as linhas azuis e verdes são tracejadas, não sólidas – mas eu não tenho idéia de como fazer isso.

Qualquer ajuda seria muito apreciada,

Você precisa fazer duas coisas:

  1. Renomeie e reordene os níveis de fator antes da plotagem
  2. Renomeie o título de cada legenda para o mesmo título

O 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") 

insira a descrição da imagem aqui

No entanto, acho que isso é muito feio e difícil de interpretar. É muito melhor 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) 

insira a descrição da imagem aqui