2012-12-13 146 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) 
相關問題