[英]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.