【问题标题】:Plots for two variables within a group about each other with ggplot2使用 ggplot2 绘制一组内的两个变量
【发布时间】:2020-08-30 15:06:48
【问题描述】:

我想使用 ggplot2 为多个(在下面的示例中:4)个人绘制两个变量。现在我希望对于每个人来说,这两个变量的图表是相互关联的。

示例数据:

da = data.frame(id = c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4), day = c(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4), var1= c(3,4,2,1,2,2,2,3,4,4,5,3,2,1,2,3), var2 = c(1,1,1,2,2,2,1,2,2,1,2,1,1,1,1,2))

我可以分别绘制两个变量的图:

da %>% ggplot(aes(x= day, y = var1)) + geom_line()+ facet_wrap(~id, nrow = 2) 
da %>% ggplot(aes(x= day, y = var2)) + geom_line()+ facet_wrap(~id, nrow = 2) 

我得到两个单独的图:

但我想要的是这个(...我用 Paint 移动了绘图以向您展示我需要的东西):

【问题讨论】:

    标签: r ggplot2 plot


    【解决方案1】:

    尝试旋转到更长的时间:

    library(tidyverse)
    
    da %>%
      pivot_longer(var1:var2) %>%
      ggplot(aes(x = day, y = value)) + geom_line() + facet_grid(name ~ id)
    

    【讨论】:

      【解决方案2】:

      我建议使用patchwork 的方法,您可以根据需要安排您的情节。 @arg0naut91 的解决方案是解决这个问题的好方法,但如果你想放置不分面的图,你可以使用下一个代码:

      library(ggplot2)
      library(tidyverse)
      library(patchwork)
      #Data
      da = data.frame(id = c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4),
                      day = c(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4),
                      var1= c(3,4,2,1,2,2,2,3,4,4,5,3,2,1,2,3),
                      var2 = c(1,1,1,2,2,2,1,2,2,1,2,1,1,1,1,2))
      #Plots
      G1 <- da %>% ggplot(aes(x= day, y = var1)) + geom_line()+ facet_wrap(~id, nrow = 1) 
      G2 <- da %>% ggplot(aes(x= day, y = var2)) + geom_line()+ facet_wrap(~id, nrow = 1) 
      #Bind plots
      G1/G2
      wrap_plots(G1,G2,ncol = 1)
      

      输出:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-16
        • 2021-07-14
        • 2019-05-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多