簡體   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