2012-12-13 96 views
1

为了突出两个相同尺寸矩阵之间的差我想显示两个在使用红色的色调的一个矩阵和色调的半透明方式叠加绿色对方一R.叠加红色/绿色图像中的R用图像()或rasterImage()

(它们是相同的地方产生黄色)

只显示一个矩阵我

library(grDevices) 
matr=replicate(10, rnorm(20,mean=0.5,sd=0.1))  
colpalette=colorRampPalette(c("black", "red")) 
image(matr^0.2,col = colpalette(1000),useRaster=T) 

是否有任何人有任何想法,我应该如何适应这表明两个矩阵matr1matr2叠加红/绿?

而且,这将是有超过所产生的图像的亮度对比度&有点控制的最佳方式?有没有比我现在使用的能量转换更好的方法?

欢呼声, 汤姆

+0

rasterImage将直接采用十六进制值或三维数组的rgb值矩阵,使用 - 图像不公开该选项。也看到了SP SGDF2PCT对于图像的调色板建设方法,请记住,透明度的支持取决于设备,不知道是否rasterImage提供它 – mdsumner

+0

@mdsumner - 'SP ::: SGDF2PCT'觉得没有什么。你的意思是其他包吗? –

+1

@ JoshO'Brien'rgdal'是包,我相信。 – thelatemail

回答

0

哈只是发现通过首先计算两个矩阵之间的LOG2(差)并绘制一个简单的解决方案,使用调色板为零休息。这很有道理,对吧?

library(grDevices) 
matr1=replicate(10, rnorm(20,mean=0.5,sd=0.1)) 
matr2=replicate(10, rnorm(20,mean=0.5,sd=0.1)) 
matrdiff=log2(matr1/matr2) 
nbcolors=1000 
colpalette=colorRampPalette(c("red","yellow","green"))(nbcolors) 
breaks = c(seq(min(matrdiff), 0, length.out=nbcolors/2), 0, 
      seq(0,max(matrdiff), length.out=nbcolors/2)) 
image(matrdiff,col=colpalette,breaks=breaks,useRaster=T) 
相关问题