Как я могу построить выбранный график с помощью 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)
Так? :-)