gpt4 book ai didi

r - 在R中,是否可以在绘图中叠加2种颜色以形成第3种颜色(例如,使用加色或减色混合)

转载 作者:行者123 更新时间:2023-12-01 16:11:09 25 4
gpt4 key购买 nike

我想用2类数据进行散点图绘制,一种以黄色绘制,另一种以蓝色绘制,它们在重叠的位置(或任何其他组合)以绿色显示。我发现即使有了透明度,事情也变得有些困难。图形的颜色受空间中绘制的最后一点是蓝色还是黄色影响。
例如,使用以下代码:

col1 <- rgb(red = .0, green = 0, blue = 0.8, alpha = 0.8)
col2 <- rgb(red = .8, green = 0.8, blue = 0, alpha = 0.8)
circle <- data.frame(x = c(0.2,0),
y = c(0,0),
col = c(col1, col2),
stringsAsFactors = F)
orders <- c(1,2)
plot(x = circle$x[orders], y = circle$y[orders],
col = circle$col[orders], pch = 19, cex = 100, xlab = "", ylab = "")
根据设置 vector orders的方式(设置绘制两个大点的方式),您会得到不同的结果:

如果交换绘制两个圆的顺序,您将得到:

无论哪种方式,我都期望混合颜色以获得绿色。有没有办法做到这一点?谢谢!
编辑-这两个图是使用pdf设备绘制的。我也尝试通过tikzDevice运行代码,以查看是否可行,但没有成功。

最佳答案

pdf()设备的帮助文件说,背景的默认设置是“透明的”,尽管实际上这似乎并不是它的行为,这可能是因为观看者采用了白色背景,或者可能是因为plot函数的默认设置是“白色”。中间部分首先变为白色和绿色的均等混合色,第二秒则为蓝色。所以我猜测数学将预测(0.5,0.5,(0.5 + 0.8)/ 2)的rgb值,然后将该混合物与叠加的颜色混合,并且我认为white + col1将以相同的比例添加到col2中的值,这使数学不可交换。无论如何,如果您可以将背景强制为“透明”,则最终结果可能会有所不同。默认行为更像是混合颜料而不是像剧院灯光那样。

PDF色彩模型在http://www.adobe.com/devnet/pdf/pdf_reference.html中进行了描述,它将确定您对pdf设备的期望(但不一定是查看者会提供的东西)。

我通过将背景更改为“黑色”来检验我的理论,即认为白色背景是问题所在(并且似乎已对此予以反对),希望分层rgb vector 不会有附加值:

pdf("testfil12rev.pdf", bg="black")
col1 <- rgb(red = .0, green = 0, blue = 1, alpha = 0.5)
col2 <- rgb(red = 1, green = 0, blue = 0, alpha = 0.5)
circle <- data.frame(x = c(0.2,0),
y = c(0,0),
col = c(col1, col2),
stringsAsFactors = F)
orders <- c(1,2)
plot(x = circle$x[orders], y = circle$y[orders], bg="black",
col = circle$col[orders], pch = 19, cex = 100, xlab = "", ylab = "")

dev.off()

反转“订单”指示符也不会导致黑色背景具有相同的混合颜色。

编辑:有一个预先的SO发布与混合颜色和alpha的规则: How to calculate an RGB colour by specifying an alpha blending amount?

关于r - 在R中,是否可以在绘图中叠加2种颜色以形成第3种颜色(例如,使用加色或减色混合),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8269742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com