52

使用 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)

在此处输入图像描述

4

2 回答 2

77

要为您应该替换的行设置 alpha 值stat_smooth()geom_line()然后在内部geom_line()使用与 in 相同的参数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)

在此处输入图像描述

于 2013-10-20T06:33:39.333 回答
14

作为一种更直观的替代方法——可能是自这个答案以来创建的——您可以使用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-width)行,第二行在其顶部添加行。(当前)文档提到这stat_smooth是针对非标准几何图形(例如“线”)。

于 2017-09-18T17:44:34.987 回答