[英]How to plot several rgb images in R
所以我有以下格式的4张图片
> dim(images)
[1] 4 32 32 3
每个图像都是 32x32 像素的 rgb 格式,其中每个像素取一个 [0,1] 中的值。 我可以 plot 当时一张图片
images2 <- rgb(images[1,,,1],images[1,,,2],images[1,,,3])
dim(images2) <- dim(images[1,,,1])
grid.raster(images2, interpolate=F)
如何在一个 plot 中获取所有四个图像? par(mfrow=c(2,2))
似乎不起作用,我搜索了论坛并尝试gridArrange
但没有成功。
我应该转向格子,ggplot吗? 我是光栅对象的新手,所以我不知道如何解决这个问题。
谢谢
使用 rasterGrob 并从 gridExtra package 借用应该可以解决问题:
library(gridExtra)
## Let's create some imgaes, for us who don't have your data:
if(!exists("images")) {
random.rgb <- floor( runif( n=4*32*32*3, min=0, max=256 ) ) / 255
images <- array( random.rgb, dim=c(4,32,32,3) )
}
## create a list of the rasters, note, have to use rasterGrob for this:
rgb.images <- lapply( 1:4, function(i) {
r <- rgb( images[i,,,1], images[i,,,2], images[i,,,3] )
dim(r) <- dim( images[1,,,1] )
rasterGrob(r)
})
grid.arrange( grobs=rgb.images )
请注意,使用grid.arrange
中的 grid.arrange 时,您需要在提供列表时使用 grobs 参数,并且不能简单地使用第一个位置参数。
这是另一种方法,使用来自 grDevices 的光栅 class 代替,这使得使用普通的 plot 控件(par etc)更容易:
rgb.images2 <- lapply( 1:4, function(i) {
r <- rgb( images[i,,,1], images[i,,,2], images[i,,,3] )
dim(r) <- dim( images[1,,,1] )
as.raster(r)
})
par(mfrow=c(2,2))
for( i in 1:4 ) {
plot( rgb.images2[[i]] )
title( paste("Figure",i) )
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.