R 将多个GGPLOT保存到文件中
我想保存一组不同的ggplot文件。为此,我使用了一个类似以下内容的for循环:R 将多个GGPLOT保存到文件中,r,string,ggplot2,concatenation,R,String,Ggplot2,Concatenation,我想保存一组不同的ggplot文件。为此,我使用了一个类似以下内容的for循环: save = c("plot1","plot2") for (i in 1:length(save)){ ggsave(cat(save[i],"\n"), file="i.pdf") } “plot1”和“plot2”是工作GGPLOT(=打印对象的名称)。因为我得到了以下错误: Error in ggsave(cat(save[i], "\n"), file = "i.pdf") : plot sh
save = c("plot1","plot2")
for (i in 1:length(save)){
ggsave(cat(save[i],"\n"), file="i.pdf")
}
“plot1”和“plot2”是工作GGPLOT(=打印对象的名称)。因为我得到了以下错误:
Error in ggsave(cat(save[i], "\n"), file = "i.pdf") :
plot should be a ggplot2 plot
我试过猫的功能。它返回带或不带函数的相同错误。如果我直接进入“绘图”,它会工作
我做错了什么
(对示例进行了编辑,以便有多个绘图)您需要在ggsave中指定参数绘图:
ggsave(plot = plot, file = "save.pdf")
如果您有多个ggplot,则需要先将它们保存在列表中
plotlist = list()
plotlist[[1]] = plot1
plotlist[[2]] = plot2
等等,或任何其他方式。完成列表后,您可以在其上循环:
for(i in 1:2){
ggsave(plot = plot[[i]], file = paste("file",i,".pdf",sep=""))
}
这将在file1 file2等中保存绘图。您需要在ggsave中指定参数绘图:
ggsave(plot = plot, file = "save.pdf")
如果您有多个ggplot,则需要先将它们保存在列表中
plotlist = list()
plotlist[[1]] = plot1
plotlist[[2]] = plot2
等等,或任何其他方式。完成列表后,您可以在其上循环:
for(i in 1:2){
ggsave(plot = plot[[i]], file = paste("file",i,".pdf",sep=""))
}
这将在file1 file2等中保存绘图。您可以使用
get
根据名称获取对象:
library(ggplot2)
plot_1 <- qplot(mpg, wt, data = mtcars)
plot_2 <- qplot(mpg, wt, data = mtcars, geom="path")
plot_3 <- qplot(mpg, data = mtcars, geom = "dotplot")
plot_names <- c("plot_1", "plot_2", "plot_3")
for (i in 1:length(plot_names)) {
ggsave(filename=sprintf("%s.pdf", plot_names[i]),
plot=get(plot_names[i]))
}
如果要使用绘图名称作为输出,或为名称添加列表元素,则可以将它们命名存储。可以使用
get
根据名称获取对象:
library(ggplot2)
plot_1 <- qplot(mpg, wt, data = mtcars)
plot_2 <- qplot(mpg, wt, data = mtcars, geom="path")
plot_3 <- qplot(mpg, data = mtcars, geom = "dotplot")
plot_names <- c("plot_1", "plot_2", "plot_3")
for (i in 1:length(plot_names)) {
ggsave(filename=sprintf("%s.pdf", plot_names[i]),
plot=get(plot_names[i]))
}
如果要使用绘图名称作为输出,或为名称添加列表元素,则可以将它们命名存储。
c(“绘图”)
是单元素字符向量。您正在将一个带换行符的字符串传递到ggsave
的第一个参数中,该参数需要文件名。但是,如果此vetor中有多个元素,例如save=c(“plot1”、“plot2”),我将如何执行此操作?能否显示更多的代码?这些是绘图对象的名称吗?是的,它们是绘图对象的名称…如果不清楚,很抱歉cat
始终返回NULL,并且只会对打印到控制台产生副作用。在函数中使用它作为参数是完全不合适的。c(“plot”)
是一个单元素字符向量。您正在将一个带换行符的字符串传递到ggsave
的第一个参数中,该参数需要文件名。但是,如果此vetor中有多个元素,例如save=c(“plot1”、“plot2”),我将如何执行此操作?能否显示更多的代码?这些是绘图对象的名称吗?是的,它们是绘图对象的名称…如果不清楚,很抱歉cat
始终返回NULL,并且只会对打印到控制台产生副作用。在函数中使用它作为参数是完全不合适的。这对我很有用。谢谢不过,还有一件事……如何根据列表元素命名文件?与plot1.pdf、plot2.pdf一样,上述代码将另存为file1.pdf、file2.pdf等。如果您将行更改为:ggsave(plot=plot[[i]],file=paste(“plot”,i,.pdf),sep=”“)
它将另存为plot1.pdf plot2.pdf等。尝试运行i=1
,然后粘贴(“plot”,i,.pdf”,sep=“”))
您会明白,粘贴只会使用索引iso创建一个正确名称的文件,我无法从列表中获取字符串?假设我们谈论的不是plot1和plot2,而是abc和def。文件名如何为abc.pdf和def.pdf?您可以通过执行以下操作明确使用列表中的名称:ggsave(plot=plot[[i]],file=paste(names(plotlist)[i],“.pdf”,sep=”“)
这就是您要查找的吗?默认情况下,列表没有任何名称。创建列表时,您可以添加它们:plotlist[[1]]=plot1
然后您可以添加名称names(plotlist)[1]=“nameplot1”
您可以用任何您想要的内容替换nameplot1,对列表中的所有项目重复该操作(在上述情况下2)。您也可以在使用绘图填充列表后通过以下方式一次性定义名称:names(plotlist)=c(“name1”、“name2”)
。运行for循环现在应该可以执行您想要的操作;)这对我有用。谢谢不过,还有一件事……如何根据列表元素命名文件?与plot1.pdf、plot2.pdf一样,上述代码将另存为file1.pdf、file2.pdf等。如果您将行更改为:ggsave(plot=plot[[i]],file=paste(“plot”,i,.pdf),sep=”“)
它将另存为plot1.pdf plot2.pdf等。尝试运行i=1
,然后粘贴(“plot”,i,.pdf”,sep=“”))
您会明白,粘贴只会使用索引iso创建一个正确名称的文件,我无法从列表中获取字符串?假设我们谈论的不是plot1和plot2,而是abc和def。文件名如何为abc.pdf和def.pdf?您可以通过执行以下操作明确使用列表中的名称:ggsave(plot=plot[[i]],file=paste(names(plotlist)[i],“.pdf”,sep=”“)
这就是您要查找的吗?默认情况下,列表没有任何名称。创建列表时,您可以添加它们:plotlist[[1]]=plot1
然后您可以添加名称names(plotlist)[1]=“nameplot1”
您可以用任何您想要的内容替换nameplot1,对列表中的所有项目重复该操作(在上述情况下2)。您也可以在使用绘图填充列表后通过以下方式一次性定义名称:names(plotlist)=c(“name1”、“name2”)
。运行for循环现在应该可以执行您想要的操作;)