scale_fill_manual - R: Leyenda personalizada para ggplot de múltiples capas
remove legend title ggplot2 (1)
Estoy tratando de obtener una leyenda personalizada para un ggplot con datos provenientes de dos marcos de datos separados. Vea a continuación un ejemplo reproducible mínimo.
Lo que intento lograr es tener una leyenda que describa el relleno de cinta, la línea negra y la línea roja.
require(ggplot2)
x=seq(1,10,length=100)
data=data.frame(x,dnorm(x,mean=6.5,sd=1))
names(data)=c(''x'',''new.data'')
x.ribbon=seq(1,10,length=20)
ribbon=data.frame(x.ribbon,
dnorm(x.ribbon,mean=5,sd=1)+.01,
dnorm(x.ribbon,mean=5,sd=1)-.01,
dnorm(x.ribbon,mean=5,sd=1))
names(ribbon)=c(''x.ribbon'',''max'',''min'',''avg'')
ggplot()+geom_ribbon(data=ribbon,aes(ymin=min,ymax=max,x=x.ribbon),fill=''lightgreen'')+
geom_line(data=ribbon,aes(x=x.ribbon,y=avg),color=''black'')+
geom_line(data=data,aes(x=x,y=new.data),color=''red'')+
xlab(''x'')+ylab(''density'')
En lugar de establecer el colour
y el fill
, scale_xxx_manual
scale_xxx_identity
usando los aes
geometría estética y luego use scale_xxx_manual
o scale_xxx_identity
.
P.ej
ggplot()+geom_ribbon(data=ribbon,aes(ymin=min,ymax=max,x=x.ribbon,fill=''lightgreen''))+
geom_line(data=ribbon,aes(x=x.ribbon,y=avg,color=''black''))+
geom_line(data=data,aes(x=x,y=new.data,color=''red''))+
xlab(''x'')+ylab(''density'') +
scale_fill_identity(name = ''the fill'', guide = ''legend'',labels = c(''m1'')) +
scale_colour_manual(name = ''the colour'',
values =c(''black''=''black'',''red''=''red''), labels = c(''c2'',''c1''))
Tenga en cuenta que debe especificar guide = ''legend''
para forzar la scale_..._identity
para generar una leyenda.
scale_...manual
puede pasar un vector con nombre para los valores; los nombres deberían ser los que llamó los colores dentro de las llamadas a geom_...
y luego puede etiquetar muy bien.