我创建了一个绘图(使用ggplot2),现在我需要添加一个图例。无论我使用什么功能,似乎都行不通。
我已经尝试过使用scale_fill_manual,scale_color_manual,legend.title或legend.text等,
我的数据在数据框中,如下所示:
Date SAF MD
a 2018-06-04 3.42362418 120.00
b 2018-06-05 0.44019347 15.22
c 2018-06-06 0.20207786 6.89
d 2018-06-07 0.81154034 29.54
e 2018-06-08 0.05057167 1.48
f 2018-06-09 0.03542385 1.19
p <- ggplot(data=c,aes(x=date))+
geom_point(aes(y=MD*15/440),stat='identity', group=1, col='blue',
size=2.5, shape=21)+
geom_line(aes(y=MD*15/440), stat='identity',group=1,
color='blue')+
geom_point(aes(y=SAF),group=1, col='orange', size=1.5)+
geom_line(aes(y=SAF), stat='identity', group=1,
color='orange')+
scale_y_continuous(name = 'SAF', sec.axis = sec_axis(~.*440/15, name = 'MD'), limits = c(0,15))+
ggtitle('MD and SAF')+
scale_x_date(date_labels = '%e %b %y', date_breaks='1 week')+
theme(axis.text.x = element_text(angle=90))
没有特别的错误消息,我可以看到该图,但是图例没有出现。
答案 0 :(得分:0)
我认为您需要调整数据框以代表SAF
和MD
因素水平:
d <- rbind(data.frame(date=c$Date, SAF=c$SAF, myfactor='SAF'), data.frame(date=c$Date, SAF=c$MD, myfactor='MD'))
p <- ggplot(data=d,aes(x=date))+
geom_point(aes(y=SAF*15/440, color=myfactor, shape=myfactor), data=d[d$myfactor=='MD', ])+
geom_line(aes(y=SAF*15/440, color=myfactor), data=d[d$myfactor=='MD', ])+
geom_point(aes(y=SAF, color=myfactor, shape=myfactor), data=d[d$myfactor=='SAF', ])+
geom_line(aes(y=SAF, color=myfactor), data=d[d$myfactor=='SAF', ])+
scale_y_continuous(name = 'SAF', sec.axis = sec_axis(~.*440/15, name = 'MD'), limits = c(0,15))+
ggtitle('MD and SAF')+
scale_x_date(date_labels = '%e %b %y', date_breaks='1 week')+
scale_color_manual(values=c(SAF='orange', MD='blue'))+
scale_shape_manual(values=c(SAF=21, MD=20))+
scale_size_manual(values=c(SAF=1.5, MD=2.5))+
theme(axis.text.x = element_text(angle=90))
p