使用for循环保存多个GGPlot
我希望自动生成多个GGPlot: 通用数据集:使用for循环保存多个GGPlot,r,for-loop,ggplot2,R,For Loop,Ggplot2,我希望自动生成多个GGPlot: 通用数据集: mydata<-data.frame(matrix(rnorm(100),ncol=5)) names(mydata)<-c("Tijd","X1","X2","X3","X4") 要在其中保存绘图的列表: gvec<-vector("list",length=length(Start:Stop)) 生成绘图列表;我也可以手动保存绘图。但是,使用最后一个循环生成的文件都是空白的。我想不出原因 根据罗兰的建议,我试过了 打印(
mydata<-data.frame(matrix(rnorm(100),ncol=5))
names(mydata)<-c("Tijd","X1","X2","X3","X4")
要在其中保存绘图的列表:
gvec<-vector("list",length=length(Start:Stop))
生成绘图列表;我也可以手动保存绘图。但是,使用最后一个循环生成的文件都是空白的。我想不出原因
根据罗兰的建议,我试过了
打印(gvec[[i-Start+1]])
但我仍然得到空白文件作为输出 这是一个在循环中创建GGPlot的完全可复制的示例
# Plot separate ggplot figures in a loop.
library(ggplot2)
# Make list of variable names to loop over.
var_list = combn(names(iris)[1:3], 2, simplify=FALSE)
# Make plots.
plot_list = list()
for (i in 1:3) {
p = ggplot(iris, aes_string(x=var_list[[i]][1], y=var_list[[i]][2])) +
geom_point(size=3, aes(colour=Species))
plot_list[[i]] = p
}
# Save plots to tiff. Makes a separate file for each plot.
for (i in 1:3) {
file_name = paste("iris_plot_", i, ".tiff", sep="")
tiff(file_name)
print(plot_list[[i]])
dev.off()
}
# Another option: create pdf where each page is a separate plot.
pdf("plots.pdf")
for (i in 1:3) {
print(plot_list[[i]])
}
dev.off()
您可以在同一循环中创建和导出绘图。合并代码为:
for(i in Start:Stop){
graphy<-ggplot(mydata,aes_string(x="Tijd",y=names(mydata)[i]))+geom_point()+mytheme
tiff(paste0("Test/Residu/Plots/Prei/mydata.",names(mydata)[i],"09.14.tiff"),width=720,height=720)
print(graphy)
dev.off()
}
您还可以使用
ggplot2
库中的ggsave
功能
library(ggplot2)
data("iris")
# list of values to loop over
uniq_species = unique(iris$Species)
# Loop
for (i in uniq_species) {
temp_plot = ggplot(data= subset(iris, Species == i)) +
geom_point(size=3, aes(x=Petal.Length, y=Petal.Width )) +
ggtitle(i)
ggsave(temp_plot, file=paste0("plot_", i,".png"), width = 14, height = 10, units = "cm")
}
print(gvec[[i-Start+1]])
似乎不起作用。仍然是空白文件。你需要显式调用print
打印设备(罗兰就是这么说的)。我刚刚运行了你的代码,它对我有效。它会生成4个tiff文件(当打印
功能按建议添加到最终循环时)。
# Plot separate ggplot figures in a loop.
library(ggplot2)
# Make list of variable names to loop over.
var_list = combn(names(iris)[1:3], 2, simplify=FALSE)
# Make plots.
plot_list = list()
for (i in 1:3) {
p = ggplot(iris, aes_string(x=var_list[[i]][1], y=var_list[[i]][2])) +
geom_point(size=3, aes(colour=Species))
plot_list[[i]] = p
}
# Save plots to tiff. Makes a separate file for each plot.
for (i in 1:3) {
file_name = paste("iris_plot_", i, ".tiff", sep="")
tiff(file_name)
print(plot_list[[i]])
dev.off()
}
# Another option: create pdf where each page is a separate plot.
pdf("plots.pdf")
for (i in 1:3) {
print(plot_list[[i]])
}
dev.off()
for(i in Start:Stop){
graphy<-ggplot(mydata,aes_string(x="Tijd",y=names(mydata)[i]))+geom_point()+mytheme
tiff(paste0("Test/Residu/Plots/Prei/mydata.",names(mydata)[i],"09.14.tiff"),width=720,height=720)
print(graphy)
dev.off()
}
for (i in 1:10) {
mydata_id <- subset(mydata, id == i) # subselect group
p <- ggplot(mydata_id, aes(x, y)) + geom_line() # create graph
png(paste("plot_", i, ".png", sep = ""), width=600, height=500, res=120) # start export
print(p)
dev.off() # finish export
}
library(ggplot2)
data("iris")
# list of values to loop over
uniq_species = unique(iris$Species)
# Loop
for (i in uniq_species) {
temp_plot = ggplot(data= subset(iris, Species == i)) +
geom_point(size=3, aes(x=Petal.Length, y=Petal.Width )) +
ggtitle(i)
ggsave(temp_plot, file=paste0("plot_", i,".png"), width = 14, height = 10, units = "cm")
}