【问题标题】:ggplot using facet_wrap functionality while graphing statistics from multiple data.frame in R?ggplot在R中从多个data.frame绘制统计数据时使用facet_wrap功能?
【发布时间】:2020-07-02 13:45:24
【问题描述】:

对于具有多个变量的单个,我使用以下代码来计算统计数据和绘图。

library(tidyverse)

DF1 <- data.frame(seq(as.Date("2001-01-01"), to= as.Date("2003-12-31"), by="day"),
                  MaxTemp = runif(1095,-5,20),
                  MinTemp = runif(1095,-8,15),
                  MeanTemp = runif(1095,-10,10),
                  DF = rep("DF1",1095))
colnames(DF1) <- c("Date", "MaxTemp","MinTemp","MeanTemp","DF")
DF_1 <- DF1 %>%  mutate(JDay = yday(Date)) %>% 
  group_by(JDay) %>% 
  summarise(AveMaxTemp = mean(MaxTemp, na.rm = T),
            AveMinTemp = mean(MinTemp, na.rm = T),
            AveMeanTemp = mean(MeanTemp, na.rm = T))
DF_1 %>% gather(key = "Variable", value = "Value", -c(JDay)) %>% 
  ggplot(aes(x = JDay, y = Value, col = Variable))+
  geom_line(aes(y = Value))

以防万一,我有多个data.frame(参见下面的示例)。有没有办法将两个data.frame(即DF1DF2)结合起来,计算统计数据,然后使用[Tag:facet_wrap] 绘制它?

DF2 <-  data.frame(Date = DF1$Date,
        MaxTemp = runif(1095, -2,15),
        MinTemp = runif(1095,-6,15),
        MeanTemp = runif(1095,-5,10),
        DF = rep("DF2",1095))

我正在寻找像下面这样的情节

【问题讨论】:

    标签: dataframe r dataframe ggplot2 tidyverse facet-wrap


    【解决方案1】:

    尝试这样做

    DF3 <- bind_rows(DF1, DF2)
    
    DF_3 <- DF3 %>% 
      mutate(JDay = yday(Date)) %>% 
      group_by(JDay, DF) %>% 
      summarise(AveMaxTemp = mean(MaxTemp, na.rm = T),
                AveMinTemp = mean(MinTemp, na.rm = T),
                AveMeanTemp = mean(MeanTemp, na.rm = T))
    
    DF_3 %>% gather(key = "Variable", value = "Value", -c(JDay, DF)) %>% 
      ggplot(aes(x = JDay, y = Value, col = Variable)) +
      geom_line(aes(y = Value)) +
      facet_wrap(~ DF)
    

    【讨论】:

      猜你喜欢
      • 2020-11-05
      • 2020-11-09
      • 2022-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-05
      • 1970-01-01
      相关资源
      最近更新 更多