R 如何在循环的一页中绘制4 ggplot?

R 如何在循环的一页中绘制4 ggplot?,r,ggplot2,R,Ggplot2,我想在一个页面中绘制4 ggplot图形,在一个循环中在一个图形中绘制4行。 我现在只能分别绘制4张图 有什么聪明的方法吗? 谢谢 库(ggplot2) 数据集1如果重新构造数据,只需调用ggplot即可。下面是一个使用tidyr::pivot\u longer的示例。我对数据做了一些修改,使绘图看起来更有趣 library(ggplot2) library(tidyr) dataset1<-c(100,50,110,21,31,40,80,100) dataset2<-c(10,

我想在一个页面中绘制4 ggplot图形,在一个循环中在一个图形中绘制4行。 我现在只能分别绘制4张图

有什么聪明的方法吗? 谢谢

库(ggplot2)

数据集1如果重新构造数据,只需调用
ggplot
即可。下面是一个使用
tidyr::pivot\u longer
的示例。我对数据做了一些修改,使绘图看起来更有趣

library(ggplot2)
library(tidyr)

dataset1<-c(100,50,110,21,31,40,80,100)
dataset2<-c(10,15,120,22,30,50,90,100)
dataset3<-c(1,1,2,21,30,50,90,100)
Date <- as.Date(c("2020/07/16","2020/07/23","2020/07/30","2020/08/06","2020/08/13","2020/08/20","2020/08/27","2020/09/13"))

df <- data.frame(dataset1, dataset2, dataset3, Date, stringsAsFactors = F) %>% 
    pivot_longer(c(dataset1, dataset2, dataset3))

ggplot(data=df, aes(x=Date, y=value, col=name)) + geom_line()
库(ggplot2)
图书馆(tidyr)

dataset1正如另一个答案所建议的那样,“聪明”的做法是将数据重塑为长格式,但要回答您的问题,您可以在循环之外定义一个空的ggplot对象,然后依次添加层:

p <- ggplot()
for(i in 1:dim(datamatrix1)[2]) 
{
  y <- datamatrix1[,i]/(10*datamatrix1[1, i])
  df <- data.frame(y, Date = as.Date(Date))
  p <- p + geom_line(data = df, aes(Date, y), color = i)
}
p

p谢谢。因此,如果我想在代码中绘制y,我需要将y存储在三维数组中,对吗?您需要使用
pivot\u longer
从宽格式转换为长格式。在我的示例中,宽格式数据中有4列,在长格式中减少为3列,但行数增加以反映宽格式数据中的不同组合。
p <- ggplot()
for(i in 1:dim(datamatrix1)[2]) 
{
  y <- datamatrix1[,i]/(10*datamatrix1[1, i])
  df <- data.frame(y, Date = as.Date(Date))
  p <- p + geom_line(data = df, aes(Date, y), color = i)
}
p