繁体   English   中英

用ggsave和ggplot2进行迭代

[英]Iterating with ggsave and ggplot2

我有一个包含csv文件的文件夹。 我正在遍历这些csv文件并为每个csv文件创建一个图。 我可以通过以下方式做到这一点:

setwd("/myfiles/folder")
filenames = dir(pattern="*.csv")
for (i in 1:length(filenames)) { 
  tmp <-read.csv(filenames[i]); 
  print(ggplot(aes(x = count, y = time), data = tmp) + geom_point(aes(color = id)) 
      + geom_smooth(aes(color = id), method= "lm", se = F, formula=y ~ poly(x, 3, raw=TRUE)) 
      + ggtitle("Title") + labs(x="Count)",y="Time")+ggsave(file="ID_.jpeg"))
}

但是,正如您期望的那样,这只会创建一个.jpeg文件,因此每次都将其覆盖,并且保留了最终图。

我努力了:

for (i in 1:length(filenames)) { 
  tmp <-read.csv(filenames[i]); 
  print(ggplot(aes(x = count, y = time), data = tmp) + geom_point(aes(color = id)) 
       + geom_smooth(aes(color = id), method= "lm", se = F, formula=y ~ poly(x, 3, raw=TRUE)) 
       + ggtitle("Title") + labs(x="Count)",y="Time")+ggsave(file="ID"+id+".jpeg"))
}

但这导致:

regexpr(“ \\。([[:alnum:]] +)$”,x)中的错误:找不到对象'id'

为什么以前用ggsave不能识别id (对于geom_plot项)?

尝试这个,

for (ii in seq_along(filenames)) { 

  tmp <- read.csv(filenames[ii])

  p <- ggplot(aes(x = count, y = time), data = tmp) + 
          geom_point(aes(color = id)) + 
          geom_smooth(aes(color = id), method= "lm", se = F, 
                     formula=y ~ poly(x, 3, raw=TRUE)) + 
          ggtitle("Title") + 
          labs(x="Count)",y="Time")

  ggsave(file=paste0("ID", ii, ".png"), p)
}

因为在ggplot中,您提供了具有列ID的数据(在您的情况下是tmp)。 在ggsave中,它不要求数据,因此当您提供列名ID时,ggsave不知道如何处理它。

我建议在ggsave中使用i(您的迭代器)。

for (i in 1:length(filenames)) { 
tmp <-read.csv(filenames[i]); 
print(ggplot(aes(x = count, y = time), data = tmp) +   geom_point(aes(color = id)) 
   + geom_smooth(aes(color = id), method= "lm", se = F, formula=y ~ p  oly(x, 3, raw=TRUE)) 
   + ggtitle("Title") + labs(x="Count)",y="Time")+ggsave(file=paste0("ID",i,".jpeg"))
}

暂无
暂无

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

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