我希望从我的时间序列数据集中为工作日和周末创建两个单独的图
我有两组数据,一组用于温度,另一组用于变电站周围的负载。我已经将它们平均每天间隔一次 使用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中使用子图。在这种情况下,没有人知道如何绘制图像吗?
答案 0 :(得分:0)
包括可复制的数据:
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()
答案 1 :(得分:0)
首先,为什么您的字段位于不同的数据框中?我认为ggplot不能在一个图中使用两个单独的数据帧。此外,必须在aes()函数中指定作为源数据帧一部分的任何信息,因此您不应在geom_point函数中指定其他数据。要区分周末和工作日,可以使用dplyr软件包的过滤器功能:
df <- df %>%
filter(weekdays(date)=="Saturday" | weekdays(date)=="Sunday")