为什么 geom_segment 创建具有透明度的描边?

Why does geom_segment create stroke with transparency?

下面是我的代码的简化版本。该段显示半透明,如第二段覆盖第一段的一部分所突出显示的那样,显示具有更多 alpha 的白色。

如果我在 Adob​​e Illustrator 中打开保存为 SVG 的图像,透明度设置为 50%,这就解释了为什么它看起来像这样,但我不知道为什么当我打开时它被设置为 50%尚未将其设置为该值(但已将 alpha 设置为 1)。

library(tidyverse)
g <- ggplot() +      
  theme_void() +
  theme(
    plot.background = element_rect(fill = "black"),
  ) +
  #coord_polar() +
  scale_color_identity() +
  #plot distance - facing outwards
  geom_segment(aes(x = 1, xend = 3,
                   y = 1, yend = 3,
                   colour = "white", alpha = 1),
               size = 1, inherit.aes = FALSE) +
  geom_segment(aes(x = 1, xend = 2,
                   y = 1, yend = 2,
                   colour = "white", alpha = 1),
               size = 1, inherit.aes = FALSE)

g

我认为您只需将 colouralpha 移出 aes 函数即可。按照您的编写方式,这些将作为要解释的变量而不是绝对值传递:

library(tidyverse)
g <- ggplot() +      
  theme_void() +
  theme(
    plot.background = element_rect(fill = "black"),
  ) +
  #coord_polar() +
  scale_color_identity() +
  #plot distance - facing outwards
  geom_segment(aes(x = 1, xend = 3,
                   y = 1, yend = 3),
                   colour = "white", alpha = 1,
               size = 1, inherit.aes = FALSE) +
  geom_segment(aes(x = 1, xend = 2,
                   y = 1, yend = 2),
                   colour = "white", alpha = 1,
               size = 1, inherit.aes = FALSE)

g