geom_segment 中的 alpha 不工作

alpha in geom_segment not working

我尝试对情节进行一些改进,但遇到 geom_segment 中的 alpha 无法正常工作。对于最小工作示例,请检查:

ggplot(mtcars, aes(hp, mpg)) + 
  geom_point() + 
  geom_segment(aes(x = 100, xend = 200, y = 20, yend = 20), 
  inherit.aes = FALSE, 
  size = 10, 
  alpha = 0.5, 
  color = "blue")

但是,如果您将 alpha 更改为非常低的值(例如 0.005),则 0.001 似乎有效。您只能看到从 0.05 到 0.001 的一些效果。

alpha 值不是应该在 0 和 1 之间以线性方式变化还是我理解有误?

像这样,

# install.packages(c("tidyverse"), dependencies = TRUE)
library(tidyverse)
    ggplot(mtcars, aes(hp, mpg)) + 
      geom_point() + 
      annotate('segment', x = 100, xend = 200, y = 20, yend = 20,
    size = 10,
    alpha = 0.5,
    color = "blue")

ggplot2 正在绘制许多线段,一个在彼此之上,使线段不透明。您可以通过从 ggplot 函数中删除 data 并将其添加到所需的图层来解决它。其他 geoms 的类似问题 and here.

ggplot() + 
    geom_point(data=mtcars, aes(hp, mpg)) + 
    geom_segment(aes(x = 100, xend = 200, y = 20, yend = 20), 
                 inherit.aes = FALSE, 
                 size = 10, 
                 alpha = 0.5, 
                 color = "blue")

另一种选择是像 Eric 那样使用注释:

ggplot(mtcars) +
    geom_point(aes(hp, mpg)) +
    annotate(
      'segment',
      x = 100,
      xend = 200,
      y = 20,
      yend = 20,
      size = 10,
      colour = "blue",
      alpha = 0.5
    )