R 是否对打印窗口进行基本位图颜色更改?

R 是否对打印窗口进行基本位图颜色更改?,r,R,假设我创建了这样一个情节: plot(1:100, 201:300, col="red") points(1:100, 221:320, col="green") 有没有办法在绘图上进行基本位图样式的颜色更改?例如,将绘图去饱和以使其单色(黑白),或将绿色像素更改为蓝色像素 我正在寻找一种通用的方法,可以应用于任何绘图窗口。例如,如果plot窗口包含彩色地图,我可能希望将其更改为B&W。显然有很多很好的理由不在R中执行此操作,但您可以使用png库来操作发送到grDevices::png设备的绘

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

plot(1:100, 201:300, col="red")
points(1:100, 221:320, col="green")
有没有办法在绘图上进行基本位图样式的颜色更改?例如,将绘图去饱和以使其单色(黑白),或将绿色像素更改为蓝色像素


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

显然有很多很好的理由不在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
png(“test.png”,600400)
绘图(1:100201:300,col=“红色”)
点数(1:100221:320,col=“绿色”)
发展主任()
需要(png)#png库

p、 0AFAIK在创建绘图后,R绘图包并不能真正处理此类问题。您可能需要研究导出到
?svg
,并在Inkscape等外部包中应用过滤器和编辑。一旦我将其转换为PNG,坐标系就消失了,对吗?理想情况下,我希望转换为黑白,并且仍然保留坐标系,以便继续绘图。例如,对于贴图,我想将彩色底图转换为黑白,然后在顶部绘制颜色线。实际上,我认为在“底图”
plot
中没有一种简单的方法可以按颜色进行绘制,因为绘制的是对象而不是像素。最快的方法可能是对点进行过多标记:
点(1:100221:320,col=“blue”)
以蓝色代替绿色。在
ggplot2
中,可以使用
ggplot\u build()
查看对象内部并动态替换/调整颜色。
# 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")
# 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")