Несколько легенд с разными темами R - PullRequest
2 голосов
/ 27 сентября 2019

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

Вот код:

asset <- "JP-Morgan"

ticker <- "JPM"

start.date <- as.Date('2007-09-01')

# Import the Data

getSymbols(ticker, src='yahoo', from=start.date)

# string), and index the sixth column, which corresponds Adjusted Close values

Adj.Close <- get(ticker)[,6]

daily.ret2 <- ROC(Adj.Close, n=1, type='discrete')

mo.12 <- as.Date((as.numeric(Sys.Date())-365))

# Subset by 2011 on
daily.ret2 <- daily.ret2['2011/']

# Rename column so that it is not asset-specific
names(daily.ret2) <- 'Daily'

# Convert to data frame and add a column for dates
daily.ret2.df<- data.frame(year=format(time(daily.ret2),'%Y'), 
                           daily.ret2,
                           times = format(time(daily.ret2),'%Y-%m-%d'))

daily.ret2.mo <- daily.ret2[paste0(mo.12,'/'),1]
daily.ret2.12 <- data.frame(year=' Last 12 Months',daily.ret2.mo)

den.y.fr <- round(sd(daily.ret2.12$Daily)*-2,digits = 3)
den.y.to <- round(sd(daily.ret2.12$Daily)*2,digits = 3)
den.y.by <- round(sd(daily.ret2.12$Daily),digits = 3)

# All densities on one plot (kerel-smoothed) ####
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(aes(x = sd(daily.ret2.12$Daily),xend = sd(daily.ret2.12$Daily), 
                   yend = 5,y = 0,lty='s of YoY'),color = "blue",size = .5)+
  geom_segment(aes(x = sd(daily.ret2.12$Daily)*2,xend = sd(daily.ret2.12$Daily)*2,
                         yend = 5,y = 0,lty='s of YoY'),color = "blue",size = .5)+
  geom_segment(aes(x = sd(daily.ret2.12$Daily)*-1,xend = sd(daily.ret2.12$Daily)*-1,
                         yend = 5,y = 0,lty='s of YoY'),color = "blue",size = .5)+
  geom_segment(aes(x = sd(daily.ret2.12$Daily)*-2,xend = sd(daily.ret2.12$Daily)*-2,
                         yend = 5,y = 0,lty='s of YoY'),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   '))+
  scale_x_continuous(breaks = seq(-.1,.1,.05), 
                     labels = paste0(seq(-.1,.1,.05)*100,'%'))+
  scale_y_continuous(breaks = seq(0,50,5))+
  scale_linetype_manual('segment legend',values = c('s of YoY'=4))+
  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"))

До сих пор я пытался добавить две функции темы, но это не сработало, и добавлял указания непосредственно в scale_line_manual. Любые другие идеи о том, что может работать?

СпасибоВы за свое время, независимо от вашей способности помочь.

...