Agregar líneas medias de grupo al diagrama de geom_bar e incluir en la leyenda

Quiero poder crear un gráfico de barras que muestre también el valor medio de las barras en cada grupo. Y muestra la barra media en la leyenda.

He podido obtener este gráfico de barras con medios usando el código a continuación, lo cual está bien, pero me gustaría poder ver las líneas medias en la leyenda.

##The data to be graphed is the proportion of persons receiving a treatment
## (num=numerator) in each population (denom=demoninator). The population is 
##grouped by two age groups and (Age) and further divided by a categorical 
##variable V1

###SET UP DATAFRAME###
require(ggplot2)    
df <- data.frame(V1 = c(rep(c("S1","S2","S3","S4","S5"),2)), 
               Age= c(rep(70,5),rep(80,5)), 
               num=c(5280,6570,5307,4894,4119,3377,4244,2999,2971,2322),
               denom=c(9984,12600,9425,8206,7227,7290,8808,6386,6206,5227))

df$prop<-df$num/df$denom*100

PopMean<-sum(df$num)/sum(df$denom)*100

df70<-df[df$Age==70,]
group70mean<-sum(df70$num)/sum(df70$denom)*100

df80<-df[df$Age==80,]
group80mean<-sum(df80$num)/sum(df80$denom)*100

df$PopMean<-c(rep(PopMean,10))
df$groupmeans<-c(rep(group70mean,5),rep(group80mean,5))

Quiero que la trama se vea así, pero también quiero que las líneas en la leyenda se etiqueten como 'media del grupo' o similar.

 #basic plot
 P<-ggplot(df, aes(x=factor(Age), y=prop, fill=factor(V1))) +
   geom_bar(position=position_dodge(), colour='black',stat="identity")    

 P
####add mean lines    
P+geom_errorbar(aes(y=df$groupmeans, ymax=df$groupmeans, 
ymin=df$groupmeans), col="red", lwd=2)

Agregar show.legend = TRUE superpone las barras de error en la leyenda del factor, en lugar de hacerlo por separado. Si hay una manera de mostrar geom_errorbar por separado en la leyenda, esta es probablemente la solución más simple.

También probé varias cosas con geom_line. La siguiente sintaxis produce una línea para el valor medio de la población, pero que se extiende desde el centro de cada punto en lugar de cubrir el ancho de las barras. Esto produce una línea para la media de la población y produce una leyenda pero uno que muestra una barra de color en lugar de una línea.

P+geom_line(aes(y=df$PopMean, group=df$PopMean, color=df$PopMean),lwd=1)

Si intento hacer líneas para el grupo significa que las líneas no son visibles (porque son solo puntos únicos).

P+geom_line(aes(y=df$groupmeans, group=df$groupmeans, color=df$groupmeans))

También traté de evitar esto con el gráfico de facetas, aunque esto requiere que pretenda que mi variable categórica es numérica para que funcione.

###set up new df
df2<-df
df2$V1<-c(rep(c(1,2,3,4,5),2))

P<-ggplot(df2, aes(x=factor(V1), y=prop, fill=factor(V1))) +
  geom_bar(position=position_dodge(),     
  colour='black',stat="identity",width=1)

P+facet_grid(.~factor(df2$Age))

P+facet_grid(.~factor(df2$Age))+geom_line(aes(y=df$groupmeans, 
group=df$groupmeans, color=df$groupmeans))

Facetplot

Esto me permite mostrar las líneas medias, usando geom_line, por lo que aparece una leyenda (aunque no se ve bien, ¡muestra un degradado de color en lugar de líneas de color!). Sin embargo, las líneas aún no van a todo el ancho de las barras. Además, mi eje x ahora necesita volver a etiquetar para mostrar S1, S2, etc., en lugar de numérico 1,2,3

En resumen: ¿hay alguna forma de mostrar líneas de barras de error por separado en la leyenda?

Si no, entonces, si uso facetas, ¿cómo corrijo la apariencia de la leyenda y los ejes de reetiquetado con mis variables categóricas y es posible hacer que la línea abarque todo el ancho de la trama?

¿O hay una solución alternativa que me estoy perdiendo?

Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta