【问题标题】:alpha in geom_segment not working [duplicate]geom_segment 中的 alpha 不起作用[重复]
【发布时间】:2018-01-24 15:08:31
【问题描述】:

我在我的情节中尝试了一些改进,并遇到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 之间以线性方式变化还是我理解错误?

【问题讨论】:

  • 这可能有点令人困惑,但您的片段被绘制了nrow(mtcars) 次。重叠的透明线段再次形成实心线段。但真正低的 alpha 水平加起来是一个稍微透明的部分。尝试在data 参数中提供数据或使用annotate('segment', x = 100, xend = 200, y = 20, yend = 20, size = 10, alpha = 0.5, color = "blue")。空的 data.frame 也可以:geom_segment(aes(x = 100, xend = 200, y = 20, yend = 20), inherit.aes = FALSE, size = 10, alpha = 0.5, color = "blue", data = data.frame())

标签: r plot ggplot2 opacity


【解决方案1】:

ggplot2 正在绘制许多段,一个在彼此的顶部使该段不透明。您可以通过从 ggplot 函数中删除 data 并将其添加到所需的层来解决它。其他geoms herehere 也存在类似问题。

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
    ) 

【讨论】:

    【解决方案2】:

    类似的,

    # 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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多