Составление графиков по выходным и рабочим дням отдельно от набора данных временных рядов - PullRequest
2 голосов
/ 19 июня 2019

Я хочу создать два отдельных графика для рабочих и выходных дней из моего набора данных временных рядов

У меня есть два набора данных, один для температуры и один для нагрузки вокруг подстанции. Я усреднил их по дневным интервалам Используя функции mutate и wday, я превратил каждый день в дни недели, например. «Понедельник, Вт» и т. Д. У меня проблемы с отображением в ggplot Я довольно новичок в R, так что это может быть простым исправлением.

#For weekend plot
date <- as.POSIXlt(BDR1DM$day, format = "%Y-%m-%d")
df %>%
  select(day, SSLoad) %>%
  mutate(weekend = wday(day, label = TRUE)) %>%
  filter(wday(day) %in% c(1,7))

day <- as.POSIXlt(HDDsumSS$date, format = "%Y-%m-%d")
date$wday
#day of week for Temp data
dt %>% 
  select(date, Temp) %>%
  mutate(weekend = wday(day, label = TRUE)) %>%
  filter(wday(day) %in% c(1,7))

ggplot() +
  aes(x= dt$Temp, y= df$SSLoad)+
  geom_point(data = subset(df, dayofweek$weekend == c("Sat", "Sun")))

Я не уверен, что использую участок прямо в ggplot. Кто-нибудь знает, как строить сюжеты, в данном случае только для выходных.

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Во-первых, почему ваши поля в разных фреймах?Я не думаю, что ggplot может использовать два отдельных кадра данных в одном графике.Кроме того, любая информация, которая является частью исходного кадра данных, должна быть указана внутри функции aes (), поэтому вы не должны указывать другие данные внутри функции geom_point.Для разграничения выходных и будних дней вы можете использовать функцию фильтра пакета dplyr:
df <- df %>% filter(weekdays(date)=="Saturday" | weekdays(date)=="Sunday")

0 голосов
/ 19 июня 2019

Включая воспроизводимые данные:

library(dplyr)
library(ggplot2)
df <- data.frame(date = sample(seq(as.Date('2018/01/01'), 
as.Date('2019/01/01'), by="day"), 100),
                 SSLoad = runif(100,0,100),
                 Temp = runif(100,70,100))

Вы можете фильтровать с dplyr

df <- df %>%
  filter(weekdays(date)=="Saturday" | weekdays(date)=="Sunday") 

ggplot(df, aes(Temp, SSLoad)) + 
  geom_point()

Или вы можете установить подмножество при выборе данных в ggplot

df <- df %>%
  mutate(weekend = (weekdays(date)=="Saturday" | weekdays(date)=="Sunday" ))

ggplot(df[df$weekend==T,], aes(Temp, SSLoad)) + 
  geom_point()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...