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

标签 r graphics colors rgb

我想用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/

相关文章:

graphics - 如何测试线段是否与二维轴对齐矩形相交?

testing - 如何使用集群在多个图形卡上运行软件

algorithm - 是否有任何颜色生成算法?

javascript - html element.style.color 问题

r - R 中分组数据帧中特定行号的总和列

r - 高效构建大型(200 MM 线)数据框

r - `system()` 来自 R/Rgui 的交互式 .exe/二进制文件

r - 如何在连续的颜色图例中添加一条线而不是情节?

java - 在 Java 2D 中创建复合形状

excel - 在 VBA 中创建颜色矢量