【问题标题】:Add transparent block bands to ggplot for a y-range将透明块带添加到 ggplot 以获取 y 范围
【发布时间】:2018-11-30 04:42:31
【问题描述】:

我正在尝试为以下 y 范围向我的 ggplot 添加四个透明带:

  • y<2 & y>1.5
  • y<1.5 & y>1
  • y<1 & y>0.5
  • y<0.5 & y>0

我不希望范围重叠,因为这会改变我分配给每个波段的颜色(因为它们是透明的)。

我可以在使用geom_area(见下面的代码)之后获得我想要的效果,但是它们重叠,这会改变颜色。

我想知道是否有更好的方法可以让乐队专门在我想要的区域?

 df <- data.frame(y1=rep(1.99, 100),
                  y2=rep(1.49, 100),
                  y3=rep(0.99, 100),
                  y4=rep(0.49, 100),
                  x =1:100)

 ggplot(aes(x=x), data = df) + 
   geom_area(aes(y=ifelse(y1<2 & y1>1.5, y1, 0)), data=df, fill="yellow", alpha = 0.3) +
   geom_area(aes(y=ifelse(y2<1.5 & y2>1, y2, 0)), data=df, fill="darkgoldenrod1", alpha = 0.3) +
   geom_area(aes(y=ifelse(y3<1 & y3>0.5, y3, 0)), data=df, fill="darkorange1", alpha = 0.3) +
   geom_area(aes(y=ifelse(y4<0.5 & y4>0, y4, 0)), data=df, fill="darkred", alpha = 0.3) +
   theme_classic()

另外,可能是单独的问题,有没有办法让填充颜色一直到轴,而不是仅仅在它周围留下一个白色的缓冲空间?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    在绘制任何点之前使用geom_rect

    ggplot() + 
      geom_rect(aes(xmin = -Inf, xmax = Inf, ymin = 1.5, ymax = 2), fill="yellow", alpha = 0.3) +
      geom_rect(aes(xmin = -Inf, xmax = Inf, ymin = 1, ymax = 1.5), fill="darkgoldenrod1", alpha = 0.3) +
      geom_point(data = df, aes(x = x, y = y1)) +
      theme_classic()
    

    请参阅geom_rect and alpha - does this work with hard coded values? 以获取 alpha 以正确处理矩形。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-27
      • 2020-04-05
      • 1970-01-01
      • 2023-03-22
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多