Я работаю над проектом временных рядов. Я хотел бы сравнить данные «y» с «y_hat». То, что я называю «y», — это данные из моего набора данных, а «y_hat» — это то, что предсказали мои алгоритмы.
Я пробовал использовать facet_wrap, к сожалению, он отображает один временной ряд по категориям, как вы можете видеть на изображении:
nb_of_algorithm <- 6
gather_df <- df_all %>% gather(key = "Algorithm", "values", 2:nb_of_algorithm)
ggplot(gather_df, aes(x = ds, y = values)) +
geom_line(aes(color = Algorithm)) +
scale_color_brewer(palette = "Dark2") +
facet_wrap(~ Algorithm)
И я добавляю образец того, как выглядит мой фрейм данных
ds Algorithm values
1 2018-10-19 y 8115.000
2 2018-10-20 y 8730.000
3 2018-10-21 y 7155.000
4 2018-10-22 y 570.000
164 2018-10-19 y_hat_xgboost 3458.394
165 2018-10-20 y_hat_xgboost 6424.176
166 2018-10-21 y_hat_xgboost 3416.893
167 2018-10-22 y_hat_xgboost 12041.853
168 2018-10-23 y_hat_xgboost 9801.245
169 2018-10-24 y_hat_xgboost 11081.888
327 2018-10-19 y_hat_nnetar 7188.586
328 2018-10-20 y_hat_nnetar 6606.201
329 2018-10-21 y_hat_nnetar 10488.071
330 2018-10-22 y_hat_nnetar 17417.546
331 2018-10-23 y_hat_nnetar 14230.000
Ожидаемые результаты будут такими же, как и выше, на том же графике:
* "y" и "y_hat_xgboost"
* "y" и "y_hat_nnetar"
* и так далее ...
Так что я могу сравнить их с реальными данными
Спасибо за вашу помощь
По сути, мы хотим двух вещей: 1) не иметь отдельной категории для y
, 2) добавить дополнительный слой y
в каждую из оставшихся категорий. Следовательно, с
ggplot(gather_df %>% filter(Algorithm != "y"), aes(x = ds, y = values)) +
geom_line(aes(color = Algorithm)) +
scale_color_brewer(palette = "Dark2") +
facet_wrap(~ Algorithm) +
geom_line(data = gather_df %>% filter(Algorithm == "y") %>% select(-Algorithm))
мы достигаем этого, где gather_df %>% filter(Algorithm != "y")
выполняет часть 1), а последняя строка выполняет 2).
Если вы хотите, чтобы кривая y
отображалась в легенде, вы также можете добавить, скажем, aes(color = "y")
в последнюю строку. Это дает
Если вы хотите «y» на каждой панели, вы не хотите его собирать. Попробуй это:
nb_of_algorithm <- 6
gather_df <- df_all %>%
gather(key = "Algorithm", "values", 2:nb_of_algorithm, -y)
ggplot(gather_df, aes(x = ds, y = values)) +
geom_line(aes(color = Algorithm)) +
geom_line(aes(y = y), colour = "black") +
scale_color_brewer(palette = "Dark2") +
facet_wrap(~ Algorithm)
У меня нет данных, поэтому я не могу попробовать, но я надеюсь, что это, по крайней мере, направит вас в правильном направлении.