将基本位图颜色更改为绘图窗口?

时间:2014-02-21 01:15:19

标签: r

假设我创建了一个这样的情节:

plot(1:100, 201:300, col="red")
points(1:100, 221:320, col="green")

有没有办法在绘图上进行基本的位图样式颜色更改?像去饱和阴影使它变成单色(黑白),或者将绿色像素变成蓝色像素?

我正在寻找一种可应用于任何绘图窗口的通用方法。例如,如果绘图窗口包含彩色地图,我可能想将其更改为B& W.

1 个答案:

答案 0 :(得分:0)

显然有很多很好的理由不在R中执行此操作,但您可以使用png库来操作已发送到grDevices::png设备的绘图:

png("test.png",600,400)
plot(1:100, 201:300, col="red")
points(1:100, 221:320, col="green")
dev.off()

require(png) # png library
p.0<-readPNG("test.png") # load image

enter image description here

# color switch
p.colshift<-p.0               # make a copy

p.colshift[,,2]<-p.0[,,3]     # make G <- old B
p.colshift[,,3]<-p.0[,,2]     # make B <- old G

writePNG(p.colshift,"test-colshift.png")

enter image description here

# desaturate
p.desat<-p.0               # make a copy

desatmap<-(p.0[,,1]+p.0[,,2]+p.0[,,3])/3  # get average of R,G,B (not alpha : ,,4)
lapply(1:3,function(x)p.desat[,,x]<<-desatmap) # set each of R,G,B to the "average" - equal results == greyscale
writePNG(p.desat,"test-desat.png")

enter image description here