从一个矩阵制作多个多线图

时间:2017-09-07 18:03:48

标签: r plot matplotlib-widget

我想知道是否有办法将apply函数与matplot函数结合起来,为矩阵中的每n列生成一个新的图。

我目前有一个包含1350行,640列的矩阵。我使用matplot绘制了每8列所有行的值:

png("cmpd1.png")
matplot(data[,1:8], type="l", y-lab="z-score", axes = F) 
axis(side=2)
dev.off()

我想稍微自动化一下,让每个循环的列值移动8,png上的标签更改为1。 有人可以指点一下吗?

2 个答案:

答案 0 :(得分:1)

以下是vapply()和格式化的地图名称的答案。将返回已关闭的设备ID。

data <- matrix(rnorm(100*128),nrow = 100,ncol = 128)
vapply(seq(from=1,to=ncol(data)-8,by=8), 
   FUN = function (x) {
     png(paste0("cmpd",formatC(width = 3, format = "d", flag="0", x=x%/%8),".png"))
     matplot(data[,x:(x+8)], type="l", ylab="z-score", axes = F) 
     invisible(dev.off())
     },
   FUN.VALUE=integer(1)
)

答案 1 :(得分:0)

我认为有lapply()的版本,但是循环也可以完成

for(i in seq(1,ncol(data),8)){
  png(paste0("cmpd",i,".png"))
  matplot(data[,i:(i+7)], type="l", ylab="z-score", axes = F) 
  axis(side=2)
  dev.off()
}