Tôi đang cố gắng để có được một chú giải tùy chỉnh cho một ggplot với dữ liệu đến từ hai khung dữ liệu riêng biệt. Xem dưới đây cho một ví dụ tái sản xuất tối thiểu.R: Chú thích tùy chỉnh cho nhiều lớp ggplot
Những gì tôi đang cố gắng hoàn thành là có một chú thích mô tả điền ribbon, đường màu đen và đường màu đỏ.
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')
Tôi mất một thời gian mới nhận ra rằng tôi đã đặt màu ngoài định nghĩa thẩm mỹ. Đó là một sự khác biệt tinh tế. – scs217
+1. BTW, để làm rõ thêm, tôi sẽ nói: 'geom_line (aes (..., color = 'a') ...)' và sau đó 'scale_color_manual (..., values = c ('a' = 'black' , ...)) '. Bằng cách đó, rõ ràng rằng chuỗi trong 'aes (color = 'string')' chỉ là một ràng buộc, màu thực tế sẽ là bất kỳ thứ gì bạn định nghĩa trong 'scale_color_manual()'. –
Cảm ơn vì điều này! Tôi đồng ý với @ scs217 rằng sự khác biệt tinh tế giữa việc thiết lập màu trong 'geom_line (color = x)' vs trong 'geom_line (aes (color = x))' có thể dễ dàng bị bỏ qua. Tôi đã đề xuất chỉnh sửa để nhấn mạnh hơn vào điều đó. – JanLauGe