Добавление линий с помощью Facet R - PullRequest
1 голос
/ 02 октября 2019

Я сделал график, и я хочу иметь возможность отображать на графике значения текущего дня.

Вот мой код:

dratio_main <- merge(rolling.dratio.10$Daily, rolling.dratio.21$Daily, rolling.dratio.63$Daily, rolling.dratio.126$Daily, rolling.dratio.252$Daily)
dratio_main <- data.frame(times=time(dratio_main),dratio_main)
names(dratio_main) <- c('Date','D10','D21','D63', 'D126', 'D252')
dratiolatest <- dratio_main[nrow(dratio_main),4:6]

dratiodf <- melt(dratio_main,
                 id.vars = "Date",
                 variable.name = "Type",
                 value.name = "Value")

dratiodf_2 <- filter(dratiodf, Type == c("D63",'D126','D252'))

ggplot(dratiodf_2, aes(x=Value))+
  stat_ecdf(geom = "step")+
  facet_wrap(.~Type)+
  geom_vline(data = dratiolatest,xintercept = dratiolatest,na.rm = T)+
  coord_cartesian(xlim=c(0,4))+
  theme_economist()

Вот часть dratiodf_2:

22  2013-10-24  D63 2.3506257
23  2013-10-29  D63 2.1868155
24  2013-11-01  D63 1.7831371
25  2013-11-06  D63 1.2590704
26  2013-11-11  D63 0.9328020
27  2013-11-14  D63 1.0349820
28  2013-11-19  D63 1.1082279

Идея состоит в том, что тогда в более поздних столбцах вы получите то же самое, но столбец «D36» изменился на другой период, а столбец со значениями изменился на другие значения для этого периода.

Вот dratiolatest:

               D63      D126      D252
2019-10-01 0.9085238 0.7253774 0.7516055

Это самые последние значения каждого периода.

Теперь мой вопрос: как мне сделать так, чтобы были строки? в каждом фасете, которые показывают самое последнее значение этого фасета?

Я пробовал различные geom_vline и stat_summaryh идеи, и они просто не будут отображаться или отображаться в ограненном формате.

Спасибо за ваше время, независимо от ваших возможностей ответа.

1 Ответ

0 голосов
/ 03 октября 2019

(если я правильно понял вашу проблему), с длинным форматом dratiolatest вроде dratiodf_2 дает то, что вы хотите.

library(tidyr)

dratiolatest_long <- dratiolatest %>% gather("Type", "Value", -Date)

ggplot(a, aes(x=Value))+
  stat_ecdf(geom = "step")+
  facet_wrap(.~Type)+
  geom_vline(data = dratiolatest_long, aes(xintercept = Value))+  # modified line
  coord_cartesian(xlim=c(0,4))+
  theme_economist()
...