我在几个循环中创建了一个图表,我想自动将图表写入外循环末尾的文件中。这是一个玩具示例:
filename <- "mychart"
for(i in 1:5) {
x <- 1:5
fun1 <- sample(1:10, 5, replace = TRUE)
xlim <- c(1, 5)
ylim <- c(0, 10)
plot(x, fun1, xlim = xlim, ylim = ylim, type = "l")
for(j in 1:3) {
fun2 <- 2:6 + j
lines(x, fun2, type = "l", col = "red")
}
out.filename <- paste(filename, i, sep = "")
## want to save this plot out to disk here!
}
我还想在控制台上创建情节,以便观看节目的进度。类似问题的大多数答案似乎都涉及使用单个“plot”语句创建的绘图,或者不启用控制台绘图窗口。任何建议都非常赞赏。
答案 0 :(得分:1)
我认为这就是您所追求的目标:
plotit <- function(i) {
x = 1:5
fun1 = sample(1:10, 5, replace=TRUE)
plot(x, fun1, xlim=c(1,5), ylim=c(0,10), type="l")
for(j in 1:3) {
fun2 = 2:6 + j
lines(x, fun2, type = "l", col = "red")
}
savePlot(paste0("mychart", i, ".png"), type="png")
}
然后:
for(i in seq(5)) plotit(i)
答案 1 :(得分:0)
保存基本图形图的典型方法是使用单个设备功能,例如pdf()
,png()
等。使用适当的文件名打开绘图设备,创建绘图,然后关闭设备与dev.off()
。如果您的绘图是在for循环中创建的,则无关紧要。查看?png
中的大量设备(以及底部的示例)。
对于你的代码,它会是这样的:
filename <- "mychart"
for(i in 1:5) {
out.filename <- paste(filename, i, ".png", sep = "")
## Open the device before you start plotting
png(file = out.filename)
# you can set the height and width (and other parameters) or use defaults
x <- 1:5
fun1 <- sample(1:10, 5, replace = TRUE)
xlim <- c(1, 5)
ylim <- c(0, 10)
plot(x, fun1, xlim = xlim, ylim = ylim, type = "l")
for(j in 1:3) {
fun2 <- 2:6 + j
lines(x, fun2, type = "l", col = "red")
}
## Close the device when you are done plotting.
dev.off()
}