在r中可视化和修改for循环中的大量图

rdo*_*arn 2 plot r

这是一个问题,我有很多情节,我想一步一步地逐个修改它们.

xm <- matrix(runif(20000), ncol = 1000)

 for (i in 1:ncol(xm)){
    hist(xm[,i], col = i)
 }
Run Code Online (Sandbox Code Playgroud)

这个循环将使得图表如此之快,以至于我将在图形设备中切开第二个以查看(或根本不看).

rdo*_*arn 5

可以有几种方法:

(1)逐个看图 - 按返回键查看下一个图

我们可以创建一个中断,用户可以使用返回键来查看下一个图.

xm <- matrix(runif(20000), ncol = 1000)
for (i in 1:ncol(xm)){
    hist(xm[,i], col = i, main = paste(i))
    grDevices::devAskNewPage(ask = TRUE)
}
Run Code Online (Sandbox Code Playgroud)

请注意,R中的默认行为是 grDevices::devAskNewPage(ask = FALSE).

(2)您想要从键盘看到的输入图号

您可以选择要绘制的变量,这样可以避免按时间顺序显示绘图,或者您可以按照所需的顺序输入所需的绘图编号,并在完成后单击停止.

for (i in 1:ncol(xm)){ 
    i <- scan(nmax=1)
    hist(xm[,i], col = i, main = paste(i))
}
Run Code Online (Sandbox Code Playgroud)

(3)新窗口中的所有图

如果您想每次制作一个新的情节,您可以使用:

for (i in 1:10){
    hist(xm[,i], col = i, main = paste(i))
    dev.new()
}
Run Code Online (Sandbox Code Playgroud)

(4)单窗口多个图

如果您想在单个图中绘制多个图:

par(mfrow = c(5,2))
for (i in 1:10){
    hist(xm[,i], col = i, main = paste(i))
}
Run Code Online (Sandbox Code Playgroud)

(5)在单独的页面中有多个图的Pdf文件

将文件另存为PDF或其他格式的另一种方法:

以下将创建输出PDF将所有数字放在不同的页面中,然后可以向下滚动.

pdf("outtrtt.pdf",width=7,height=5)
    for (i in 1:ncol(xm)){
        hist(xm[,i], col = i, main = paste(i))
    }
dev.off()
Run Code Online (Sandbox Code Playgroud)

(6)每个情节单独的pdf文件

或者,如果要根据绘图或其他图像文件类型将输出创建为单个PDF文件,则可以这样做.请注意,这在mac和windows中可能有所不同.

 for (i in 1:ncol(xm)){
     pdf(paste("var", i, ".pdf", sep = ""),width=7,height=5)
         hist(xm[,i], col = i, main = paste(i))
     dev.off()
 }
Run Code Online (Sandbox Code Playgroud)

(7)单独的图像文件

您可以保存为jpeg或您选择的其他格式

 for (i in 1:ncol(xm)){
     jpeg(paste("var", i, ".jpeg", sep = ""),width=700,height=500)
         hist(xm[,i], col = i, main = paste(i))
     dev.off()
 }
Run Code Online (Sandbox Code Playgroud)

其他答案是受欢迎的.