使用 image() 或 rasterImage() 在 R 中叠加红色/绿色图像



为了突出两个相同大小的矩阵之间的差异,我想以半透明的方式显示两者叠加,其中一个矩阵使用红色阴影,另一个矩阵使用绿色阴影(在它们相同的地方产生黄色)。

只显示我有一个矩阵

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叠加在红色/绿色中?

另外,对结果图像的亮度和对比度进行一些控制的最佳方法是什么?有没有比我现在使用的力量变换更好的方法?

干杯汤姆

Ha 刚刚找到了一个简单的解决方案,首先计算两个矩阵之间的 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)

相关内容

  • 没有找到相关文章

最新更新