2014-06-24 35 views
-1

我有一个大的二进制矩阵(0,1),我想将其可视化,以便我的矩阵的每个条目都是一个像素。 我使用image()函数,但它不能按我的预期工作。 我会期待的,因为最后一行条目都是零,那么我应该在图像的最后一行看不到白色像素。为什么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

+0

尝试用'吨()'函数转置矩阵。 – gagolews

+0

我做到了,但也给出了错误的答案 – user2806363

+1

0是一个值。因此它被显示。如果您不希望'image'分配颜色,请使用'NA'而不是0。 (1:4,1:2,b)'b < - 矩阵(c(0,1,1,0,1,1,0,NA),nrow = 4,ncol = 2)' ' –

回答

2

我硝基甲苯知道有关图像()函数,但是你可以用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') 
+0

EBImage不适用于R版本3.1 – user2806363

+0

尝试使用Google搜索,然后通过biocLite下载 –

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

相关问题