То, что я пытаюсь сделать, это сказать ggplot geom_line столбец тиббла с кавычкой ``.
Например, если я напишу буквально «имя» столбца, он будет работать:
это сгенерированный тибль:
Q <- as_tibble(data.frame(series = rep(c("diax","diay"),3),
value = c(3.25,3.30,3.31,3.36,3.38,3.42),
year = c(2018,2018,2019,2019,2020,2020))) %>%
select(year, series, value) %>% spread(key = "series", value = "value") %>%
rename(`2018-01-01` = diax, `2017-01-01` = diay)
А это команда ggplot:
ggplot(Q, aes(x = year)) +
geom_line(aes(y = `2018-01-01`), col = "red", size = 2, linetype = "dotdash") +
geom_line(aes(y = `2017-01-01`), col = "orange", size = 2, linetype = "dashed")
Код выше работает просто отлично.
Но если у меня есть вектор строк с именем столбцов, я просто не могу повторить предыдущий результат, вызывая вектор.
То есть предположим, что у меня есть такой вектор:
nomes <- c("2018-01-01","2017-01-01")
и тогда я бы хотел ggplot что-то вроде этого:
ggplot(Q, aes(x = year)) +
geom_line(aes(y = nomes[1]), col = "red", size = 2, linetype = "dotdash") +
geom_line(aes(y = nomes[2]), col = "orange", size = 2, linetype = "dashed")
Я знаю, что это не сработает, но, как новичок, я думаю, что строки ниже будут работать просто отлично, но они не
ggplot(Q, aes(x = year)) +
geom_line(aes(y = !!quo(nomes[1])), col = "red", size = 2, linetype = "dotdash") +
geom_line(aes(y = !!quo(nomes[2])), col = "orange", size = 2, linetype = "dashed")
Я понял, что quo (nomes [1]) не доставляет имя внутри позиции вектора, и я не мог получить то, что хотел, пытаясь найти некоторые альтернативы, о которых я думал.