繁体   English   中英

当一个圆的面积为 0 时,维恩图的颜色错误

[英]Wrong colors for Venn diagram when the area of one circle is 0

为什么当一个圆的面积为 0 ("A" = 0) 与面积为 0.1 ("A" = 0.1) 时颜色会发生变化--> 比较示例 1 和 2。此外,如果 A 和 B 为 0,则圆圈是黑色而不是绿色(参见示例 3)。

library(eulerr)

# example 1
fit <- euler(c("A" = 0.1, "B" =  10, "A&B" = 5))
p1 <- plot(fit,
          fills = list(fill = c("black", "blue", "green")),
          labels = F)
p1

在此处输入图片说明

# example 2
fit <- euler(c("A" = 0, "B" =  10, "A&B" = 5))
p2 <- plot(fit,
          fills = list(fill = c("black", "blue", "green")),
          labels = F)
p2 

在此处输入图片说明

# example 3
fit <- euler(c("A" = 0, "B" =  0, "A&B" = 5))
p3 <- plot(fit,
           fills = list(fill = c("black", "blue", "green")),
           labels = F)
p3

在此处输入图片说明

编辑:

我在这里找到了解决方法(见下文)。 但是颜色的顺序似乎很奇怪。 A 应该是黑色,B --> 蓝色和 A&B --> 绿色。 如果 none 是 0,这是正确的顺序 --> c("black", "blue", "green")。 但如果 A 或 B 为 0,则顺序不同,基本上就是它们在图中从左到右的显示方式。 奇怪的....

combo <- c(A=1, B = 10, "A&B" = 1)
fit <- euler(combo)



p <- plot(fit,
          fills = list(fill = 
                         if (combo["A"] == 0) {
                           c("green", "blue")
                           
                         } else if (combo["B"] == 0)  {
                           c("black", "green")
                         } else {
                           c("black", "blue", "green")
                         }
          ),
          labels = F)

p

编辑:重新阅读您的帖子, euler正在按预期工作。

  • p1 -​​ A 为黑色,B 为蓝色,AB 重叠为绿色
  • p2 - A 是黑色,B 是蓝色,没有绿色,因为 A 完全在 B 内部,所以它只是黑色
  • p3 - A 是黑色的,B 是蓝色的,但是由于 A 和 B 完全重叠,A 完全位于 B 之上,所以它都是黑色的。

也许使用透明度,如下所示:

fit <- euler(c("A" = 0, "B" =  0, "A&B" = 5))
p3 <- plot(fit, fills = list(fill = c("black", "blue", "green"), alpha = 0.4),
           legend = list(side = "right"))
p3

在此处输入图片说明


原始答案,仍然与理解重叠颜色有关......

颜色数量应与套数相匹配,在这种情况下,我们只有 2 套:A 和 B,所以我们只需要 2 种颜色,重叠颜色是通过“混合”重叠设置的颜色生成的,参见:

# R version 4.0.2
# eulerr_6.1.0
library(eulerr) 

fit <- euler(c("A" = 1, "B" =  10, "A&B" = 5))
plot(fit, fills = list(fill = c("red", "green")), legend = list(side = "right"))

在此处输入图片说明

fit <- euler(c("A" = 0, "B" =  10, "A&B" = 5))
plot(fit, fills = list(fill = c("red", "green")), legend = list(side = "right"))

在此处输入图片说明

颜色是按顺序使用的。 如果A=0A=0没有什么可填充A ,因此B的区域用第一种颜色(黑色)填充, A&B的区域用第二种颜色( blue )填充。 在第三个示例中, AB都没有填充,因此A&B用第一种颜色填充。

如果值为 0,最简单的解决方案就是从向量中删除一个颜色(或多个)。例如。

# example 2
fit <- euler(c("A" = 0, "B" =  10, "A&B" = 5))
p2 <- plot(fit,
          fills = list(fill = c("blue", "green")),
          labels = F)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM