为什么image()函数不能正常工作?

时间:2014-06-24 09:39:06

标签: r image

我有大二进制矩阵(0,1),我想要将它可视化,以便我的矩阵的每个条目都是图中的一个像素。 我使用image()函数,但它不能像我预期的那样工作。 我希望如此,因为最后一行条目都是零,那么我应该在图像的最后一行看不到白色像素。

这是我尝试使用其输出的简单示例:

a <- list(c(0,1,1,0),c(1,1,0,0))
b <- matrix(unlist(a),ncol=2)
> b
     [,1] [,2]
[1,]    0    1
[2,]    1    1
[3,]    1    0
[4,]    0    0

enter image description here

2 个答案:

答案 0 :(得分:4)

image绘制输入矩阵的逆时针旋转时,您必须将其转置然后翻转才能正常绘制:

tb <- t(b)
ftb <- tb[ , ncol(tb):1]

现在,如果您不喜欢默认颜色,可以使用自定义颜色,例如0为灰色,1为红色。同样使用等于1的asp会使图像的每个像素成矩形(来自@ koekenbakker的评论)。

image(x=1:2, y=1:4, ftb, col = c("grey", "red"), asp = 1)

enter image description here

答案 1 :(得分:2)

我不知道image()函数,但你可以用这样的EBImage包来做到这一点。

a<-list(c(0,1,1,0),c(1,1,0,0))
b<-matrix(unlist(a),ncol=2)
library(EBImage)
x <- as.Image(b)
display(x,method='raster')