Как я могу построить выбранный график с помощью autoplot + facet_wrap в R?

все.

Мне нужно построить выбранную. Я могу нарисовать все, но я не могу понять, как построить то, что я выбираю.

Например ...

      date <- as.Date('2021-01-01') + 0:4
category <- c(rep("A",5), rep("B",5), rep("C",5), rep("D",5), rep("E",5))
product <- c("A1","A2","A3","A4","A5",
             "B1","B2","B3","B4","B5",
             "C1","C2","C3","C4","C5",
             "D1","D2","D3","D4","D5",
             "E1","E2","E3","E4","E5")
value <- rnorm(25,10,1)
df <- data.frame(date, category, product, value)

Прежде всего, я сделал простой крошечный набор данных. и конвертируем объект tsibble. (мои данные - это временные ряды.)

      df <- tsibble(df, key = c(category, product), index = date)
df_h <- df %>% aggregate_key(category / product, value = sum(value))

и я использую aggregate_key()функция для создания иерархических временных рядов.

      df_h %>% autoplot(value) + facet_wrap(~ category, scales = "free_y")

затем .. построить его, используя autoplot() функция плюс facet_wrap()

результаты показывают 6 графиков (агрегированные + 5 категорий), мне нужно построить только выбранную категорию (от A до E).

Спасибо всем.

..обновлено

      date <- as.Date('2021-01-01') + 0:4
category <- c(rep("A",5), rep("B",5), rep("C",5), rep("D",5), rep("E",5))
product <- c("A1","A2","A3","A4","A5",
             "B1","B2","B3","B4","B5",
             "C1","C2","C3","C4","C5",
             "D1","D2","D3","D4","D5",
             "E1","E2","E3","E4","E5")
value <- rnorm(25,10,1)


df <- data.frame(date, category, product, value)


df <- tsibble(df, key = c(category, product), index = date)


df_h <- df %>% aggregate_key(category / product, value = sum(value))


df_h %>% 
    filter(category == "A" | category == "C" | category == "E") %>% 
    autoplot(value) + facet_wrap(~ category, scales = "free_y" , ncol = 2)

просто временно ... используя filter()функция, я могу построить то, что я выбрал. но это выглядит не очень хорошо. Я думаю, что есть более элегантный способ справиться с этим.

1 ответ

      date <- rep(as.Date('2021-01-01') + 0:4, 5)
category <- c(rep("A",5), rep("B",5), rep("C",5), rep("D",5), rep("E",5))
product <- c("A1","A2","A3","A4","A5",
             "B1","B2","B3","B4","B5",
             "C1","C2","C3","C4","C5",
             "D1","D2","D3","D4","D5",
             "E1","E2","E3","E4","E5")
value <- rnorm(25,10,1)

tibble(date, category, product, value)|>
  tsibble(key = category, index = date)|>
  filter(category == "A" | category == "C" | category == "E") |> 
  autoplot(value) + facet_wrap(~ category, scales = "free_y" , ncol = 2)

Так? :-)

Другие вопросы по тегам