, поэтому я рисую данные временного ряда на ggplot для проекта, над которым я работаю. Вот как выглядят данные: Примеры данных:
structure(list(Date = c("2015-01-01", "2015-02-01", "2015-03-01",
"2015-04-01"), Actual = c(500L, 600L, 700L, 750L), Fcst1 = c(600L,
610L, 634L, 650L), Fcst2 = c(500L, 630L, 875L, 900L), Fcst3 = c(500L,
600L, 754L, 800L), Fcst4 = c(500L, 600L, 700L, 760L)), class = "data.frame", row.names = c(NA,
-4L))
Date Actual Fcst1 Fcst2 Fcst3 Fcst4
2015-01-01 500 600 500 500 500
2015-02-01 600 610 630 600 600
2015-03-01 700 634 875 754 700
2015-04-01 750 650 900 800 760
.......... ... ... ... ... ...
Сами данные хранятся еще 60 месяцев, и всего существует 40 прогнозов, скорректированных ежемесячно. Когда я пытаюсь построить его, я хочу, чтобы фактическая линия была наверху, но в итоге она строится первой. Вот код, который я использую:
df <- df %>%
mutate(Date = ymd(Date))
colnames(df)[3:length(df)] <-
paste("df", colnames(df[, c(3:length(df))]), sep = "")
ggplot(
tidyr::pivot_longer(df, c(Fcst1:Fcst6, Actual), names_to = "Forecast", names_prefix = "df"),
aes(Date, value, color = Forecast)
) +
geom_line(size = 1) +
scale_color_manual(values = c(
"Fcst1" = "red", "Fcst2" = "blue",
"Fcst3" = "green", "Fcst4" = "yellow", "Fcst5" = "purple",
"Fcst6" = "orange", "Actual" = "black"
)) +
ggtitle(label = "Actuals vs Forecasts", subtitle = "Dataset") +
ylab("Rate") +
scale_y_continuous(labels = scales::comma)
Тем не менее, я хочу сохранить порядок в легенде, поэтому я хочу, чтобы наверху были фактические значения, а затем порядок прогнозов, перечисленных в scale_color_manual
. Прямо сейчас сначала строятся фактические значения (что означает, что они находятся под всеми другими прогнозами), и я хочу, чтобы они были сверху (и желательно с более толстой линией, возможно, size=1.2
. Спасибо!