繁体   English   中英

R:使用for循环创建图列表

[英]R : Create list of plots with for loop

我尝试使用for循环过滤(=“ TAB_tmp2”)并将数据添加到列表(=“ ListeGRAPH”)中,以创建数据图表列表。 我认为问题来自过滤器数据表(=“ TAB_tmp2”)的差异。
我已经在网上阅读了几个有关此主题的主题,但找不到适用于这种情况的解决方案。

我的代码:

rm(list=ls()) # delete objects

#====================================
# Create data for the example 
#====================================  
TAB = data.frame(Types_Mesures = c(rep(1,3),rep(2,5),rep(3,10)))
TAB$ID_mesuresParType=NA
TAB$Mesures=log(c(1:length(TAB$Types_Mesures)))
Nb_Types=length(unique(TAB$Types_Mesures)) # in the real data, the number of "Types_Mesures" can change

for (x in 1:Nb_Types) {
  TAB_tmp=TAB[TAB$Types_Mesures==x,2]
  TAB[TAB$Types_Mesures==x,2]=c(1:length(TAB_tmp)) 
}

#====================================
# List of plots
#====================================
library(gridExtra)
library(ggplot2)

INPUTDirectory= "D:/TEST/"
setwd(dir=INPUTDirectory)

ListeGRAPH <- list()

for (x in 1:Nb_Types) {

  TAB_tmp2=TAB[TAB$Types_Mesures==x,]

  ListeGRAPH[[x]] <- ggplot(data = TAB_tmp2) + 
    geom_line(aes(x = TAB_tmp2$ID_mesuresParType, y = TAB_tmp2$Mesures))

  #   #Save graph
  #   png(filename = paste("TAB_plot_T",x,".png", sep = ""))
  #   print(ListeGRAPH[[x]]) 
  #   graphics.off()

}

gridExtra::grid.arrange(grobs = ListeGRAPH)

运行代码时,出现以下错误:

错误:美学的长度必须为1或与数据(3)相同:x,y

似乎grid.arrange不接受不同尺寸的图? 我该怎么做才能用这种表格列出地块清单? 在我的真实数据中,“ Types_Mesures”的数量可以更改。 而且,我认为for循环不允许使用临时变量(=“ TAB_tmp2”)创建绘图列表,但是当我将绘图保存在PNG文件中时,此代码有效。

非常感谢您的帮助!

问题实际上与grid.arrange 使用ggplot创建图时,无需使用$来为列建立索引。 所以代替:

ListeGRAPH[[x]] <- ggplot(data = TAB_tmp2) + 
  geom_line(aes(x = TAB_tmp2$ID_mesuresParType, y = TAB_tmp2$Mesures))

您应该使用:

ListeGRAPH[[x]] <- ggplot(data = TAB_tmp2) + 
  geom_line(aes(x = ID_mesuresParType, y = Mesures))

然后您将能够使用grid.arrange绘制结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM