根据整数矩阵和色彩图制作图像

时间:2018-08-18 23:48:16

标签: r

我正在R下工作,想做以下事情。

我有一个矩阵,其项的整数范围为1到n。此外,我还有一个命名列表,将整数1,2,3 ...,n映射到颜色

c('white':1, 'black':2, 'pink':3, ...., 'purple':n)

我想要的是以与矩阵相同的分辨率将jpeg写入磁盘,并在每个像素中根据命名列表将颜色与矩阵条目中的整数相对应。

例如,我想要以下矩阵和颜色图对应的5 x 5 jpeg。

col = c('0':'white', '1':'yellow', '2':'black', '3':'green')

A = matrix( round(runif(min = 0, max = 3, n = 25)), nrow = 5)

我已经修改了EBImage软件包和raster软件包,但是到目前为止,我还没有找到实现此目的的方法。

有人有实现这一目标的代码或有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如@RobertHijmans所述,c('0':'white', '1':'yellow', '2':'black', '3':'green')不是有效的R。

使用颜色向量:

colors <- c('white', 'yellow', 'black', 'green')

整数矩阵:

A <- matrix( round(runif(min = 0, max = 3, n = 25)), nrow = 5)

将其转换为相应颜色的矩阵:

Acolors <- apply(A, 1:2, function(i) colors[i+1])

这给出了:

> Acolors
     [,1]     [,2]     [,3]     [,4]     [,5]    
[1,] "green"  "yellow" "black"  "white"  "yellow"
[2,] "yellow" "black"  "yellow" "yellow" "white" 
[3,] "black"  "yellow" "black"  "yellow" "yellow"
[4,] "white"  "black"  "black"  "yellow" "black" 
[5,] "yellow" "black"  "black"  "black"  "yellow"

现在,应用功能rasterImage

par(mar=c(0,0,0,0))
plot(0, 0, type = "n", xlim=c(0,1), ylim=c(0,1), asp=1, 
     axes=FALSE, xlab=NA, ylab=NA)
rasterImage(Acolors, 0, 0, 1, 1, interpolate = FALSE)

enter image description here

相关问题