Как добавить geom_point () в строку autolayer ()? - PullRequest
1 голос
/ 13 апреля 2019

Попытка добавить geom_points в строку автослоя () («подогнана» на рис.), Которая является оболочкой частью autoplot () для ggplot2 в пакете прогноза Роба Хиндмэнса (есть базовый автоплот / автослой в ggplot2 тоже так же скорее всего там применимо).

Проблема в том, что (я не эксперт по ggplot2, а обертка autoplot делает это сложнее), geom_point () отлично подходит к основному вызову, но как мне применить аналог автослоя (подходящие значения)?

Пробовал type = "b" как обычный geom_line (), но это не объектный параметр в autolayer ().

require(fpp2)

model.ses <- ets(mdeaths, model="ANN", alpha=0.4)
model.ses.fc <- forecast(model.ses, h=5)

forecast::autoplot(mdeaths) +
  forecast::autolayer(model.ses.fc$fitted, series="Fitted") + # cannot set to show points, and type="b" not allowed
  geom_point() # this works fine against the main autoplot call

Fitted line needs points

1 Ответ

1 голос
/ 13 апреля 2019

Кажется, это работает:

library(forecast)
library(fpp2)

model.ses <- ets(mdeaths, model="ANN", alpha=0.4)
model.ses.fc <- forecast(model.ses, h=5)

# Pre-compute the fitted layer so we can extract the data out of it with 
# layer_data()
fitted_layer <- forecast::autolayer(model.ses.fc$fitted, series="Fitted")
fitted_values <- fitted_layer$layer_data()

plt <- forecast::autoplot(mdeaths) +
  fitted_layer +
  geom_point() +
  geom_point(data = fitted_values, aes(x = timeVal, y = seriesVal))

enter image description here

Возможно, есть способ заставить forecast::autolayer делать то, что вы хотите напрямую, но это решениеработает.Если вы хотите, чтобы легенда выглядела правильно, вам нужно объединить входные данные и подогнанные значения в один data.frame.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...