Как добавить пользовательскую легенду в сюжет, R - PullRequest
0 голосов
/ 23 сентября 2019

Итак, я пытаюсь добавить пользовательскую легенду в мой R-граф.Я пытаюсь добавить эту легенду, чтобы объяснить линии, которые у меня есть на моем графике:

Here's the plot's link

Итак, моя цель состоит в том, чтобы легенда гласила, что синие линии представляют СтандартОтклонение.

Вот мой код:

kernal.dens <- ggplot(daily.ret2.df, aes(x=Daily,color = year))+
  geom_density(data = filter(daily.ret2.df, year != 2019),adjust=2, size=1, show.legend = T)+
  geom_density(data = daily.ret2.12,adjust=2, size=1.75, show.legend = T)+
  geom_segment(lty=1,aes(x = sd(daily.ret2.12$Daily),xend = sd(daily.ret2.12$Daily),
                         yend = 5,y = 0),color = "blue",size = .5)+
  geom_segment(lty=1,aes(x = sd(daily.ret2.12$Daily)*2,xend = sd(daily.ret2.12$Daily)*2,
                         yend = 5,y = 0),color = "blue",size = .5)+
  geom_segment(lty=1,aes(x = sd(daily.ret2.12$Daily)*-1,xend = sd(daily.ret2.12$Daily)*-1,
                         yend = 5,y = 0),color = "blue",size = .5)+
  geom_segment(lty=1,aes(x = sd(daily.ret2.12$Daily)*-2,xend = sd(daily.ret2.12$Daily)*-2,
                         yend = 5,y = 0),color = "blue",size = .5)+
  scale_color_manual(values=c( "black", '#3A8026', "#7F8931", "#C4933D","#C47422", "#C45608", 
                              "#B12F08", "#9E0808", "#80262D"),
                     labels = c(' Last 12 Months ',' 2011   ',' 2012   ',' 2013   ',' 2014   ',' 2015   ',' 2016   ',
                                ' 2017   ',' 2018   '))+
 legendGrob(labels = 'Sd',do.lines = T,nrow = 1,ncol = 1)+
  grid.legend(draw = T)+
  scale_x_continuous(breaks = seq(-.1,.1,.05), 
                     labels = paste0(seq(-.1,.1,.05)*100,'%'))+
  scale_y_continuous(breaks = seq(0,50,5))+
  labs(x='\nReturn\n',y='Density\n',title=paste0(asset, ' Daily Return Densities\n'))+
  theme(plot.title=element_text(hjust=.5,size=44-max(0,nchar(asset)-6),face='bold'),
        axis.text=element_text(size=20,color='black',face='bold'),
        axis.title=element_text(size=28,color='black',face='bold'),
        legend.text=element_text(size=18,color='black',face='bold'),
        legend.title=element_blank(),
        legend.position = 'bottom',
        plot.margin=unit(c(1,1,1,1),"cm"))

Когда я вставляю это, я получаю эту ошибку:

Error: Don't know how to add legendGrob(labels = "Sd", do.lines = T, nrow = 1, ncol = 1) to a plot

Я думаю, что ошибка в том, что Rнет данных, чтобы знать, какому элементу в легенде соответствует график.

Всякий раз, когда я вижу пример добавления пользовательского графика, уже есть старый график, который нужно заменить, но для моей ситуации яхочу сюжет, который еще не существует.

Спасибо за ваше время, независимо от ваших возможностей помочь мне.Я также хотел бы получить любой совет по добавлению легенд в R и связанных темах, чтобы лучше понять их.

...