我正在研究债券市场在7天的时间内如何应对某些事件。
因此,我想创建一个图,该图绘制日期周围债券收益率的反应。我的数据如下所示
df <- Date APP DE10
2014-09-22 0 1.010
2014-09-19 0 1.043
2014-09-18 0 1.081
2014-09-17 0 1.050
2014-09-16 0 1.061
2014-09-15 0 1.067
2014-09-12 1 1.082
2014-09-11 0 1.041
2014-09-10 0 1.047
2014-09-09 0 0.996
2014-09-08 0 0.953
2014-09-05 0 0.928
2014-09-04 1 0.970
2014-09-03 0 0.955
2014-09-02 0 0.931
2014-09-01 0 0.882
APP是指示事件日期的虚拟对象。 我使用grid.arrange制作了下图,将每个国家的债券收益率汇总为
DE10 <- ggplot(Bond10) +
geom_line(aes(x=Date, y=DE10)) +
labs(title="Germany", x="", y="Bond yield") +
scale_x_date(limits = as.Date(c('2017-10-23','2017-10-30')),
expand=c(0.1,0))+
geom_vline(aes(xintercept=as.Date("2017-10-26"), color="Event"))+
scale_y_continuous(limits = c(0.3, 0.6), expand = c(0.1,0)) +
theme(legend.position='none',
axis.text.x=element_blank(),axis.ticks.x=element_blank(),
plot.margin=unit(c(0.2,0.2,0,0.2), "cm"))
我希望下图在每个国家图中的每个图中包括多条线,以查看对不同事件的反应有多强。
答案 0 :(得分:1)
除了@MichaelChirico的建议之外,这里还有一个tidyverse解决方案
require(tidyverse)
Bond10$Date <- ymd(Bond10$Date) #needed to do this because the dates were imported as characters
Bond10 <- Bond10 %>% mutate(APP_date = ifelse(APP == 1, Date, NA))
ggplot(Bond10) +
geom_line(aes(x=Date, y=DE10)) +
geom_vline(aes(xintercept= APP_date , color="Event"))
#I removed the redundant bits and pieces, especially your totally wrong x-limits