调整stat_smooth行的透明度(alpha),而不仅仅是Confidence Interval的透明度

Eco*_*tis 37 transparency alpha r ggplot2

使用ggplot2的stat_smooth(),我很好奇如何调整生成的回归线的透明度.使用geom_points()或geom_line(),通常会为'alpha'设置一个值,表示透明度百分比.但是,使用stat_smooth(),alpha设置置信区间的透明度(在我的示例中,关闭 - se = FALSE).

我似乎无法找到一种方法使回归线的透明度低于1.

你的建议很棒.

示例代码

 library(reshape2)
 df <- data.frame(x = 1:300)
 df$y1 <-  0.5*(1/df$x + 0.1*(df$x-1)/df$x + rnorm(300,0,0.015))
 df$y2 <-  0.5*(1/df$x + 0.3*(df$x-1)/df$x + rnorm(300,0,0.015))
 df$y3 <-  0.5*(1/df$x + 0.6*(df$x-1)/df$x + rnorm(300,0,0.015))
 df <- melt(df, id = 1)

 ggplot(df, aes(x=x, y=value, color=variable)) +
   geom_point(size=2) +
   stat_smooth(method = "lm", formula = y ~ 0 + I(1/x) + I((x-1)/x),
               se = FALSE,
               size = 1.5,
               alpha = 0.5)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Did*_*rts 58

要设置alpha值只为行就应该更换stat_smooth()使用geom_line(),然后里面geom_line()使用相同的参数中stat_smooth(),另外添加stat="smooth".

ggplot(df, aes(x=x, y=value, color=variable)) +
  geom_point(size=2) +
  geom_line(stat="smooth",method = "lm", formula = y ~ 0 + I(1/x) + I((x-1)/x),
              size = 1.5,
              linetype ="dashed",
              alpha = 0.5)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Way*_*yne 9

作为一种更直观的替代方案 - 也许是从这个答案后创建的 - 您可以使用stat_smooth (geom="line").SE信封消失了,但你可以用以下内容添加回来:

geom_smooth (alpha=0.3, size=0, span=0.5) stat_smooth (geom="line", alpha=0.3, size=3, span=0.5) +

第一行创建SE.没有(0宽度)线,第二行在其顶部添加线.(当前)文档提到了stat_smooth非标准的geoms(例如"line").

  • 设置**size = 0**不再使该行消失.或者,您可以使用参数**linetype = 0**绘制没有平滑线的标准误差. (4认同)