如何在ggplot2,R中指定所有因素相同的颜色和透明度?

How to specify all factors the same colour and transparency in ggplot2, R?

我正在绘制由因子 count 分隔的多条回归线。

我尝试将颜色 + alpha 参数添加到 geom_line() 但它只生成了一行。有什么建议吗?

#CODE 生成上图

count <- c(1,2,3,1,2,3,1,2,3 1,2,3,1,2,3)
xcount <- rnorm(15,3,1)
ycount <- rnorm(15,5,1))

df <- data.frame(count, xcount, ycount)

ggplot(aes(x = xcount, y = ycount, color = factor(count)), data = df) +  
  geom_smooth(method = "lm", fill = NA) + 
  theme(panel.background = element_blank()) + 
  ylab("Y") + 
  xlab ("X") + theme(legend.position="none")

对于单一颜色和 alpha,只需将您指定的维度拉到 aes() 调用之外。 aes 之外的任何内容都将应用于每一行。诀窍还在于指定组以避免获得单行。

ggplot(aes(x = xcount, y = ycount, group = factor(count), data = df) +  
  geom_smooth(method = "lm", fill = NA, color = 'red', alpha = 0.5)

至于平均线,最简单的方法是 pre-compute 就在绘图之前的平均值。假设您将平均值放在一个名为 mu 的变量中,您只需添加以下内容:

+ geom_hline(yintercept = mu, linetype = 'longdash')

将您的组美学从第一个 ggplot 声明中移出,然后在第一个 geom_smooth 中使用您的分组来创建 3 条红线。添加另一个 geom_smooth 而不分组以在所有值(平均值)

上创建线
ggplot(aes(x = xcount, y = ycount), data = df) +  
  geom_smooth(aes(group = factor(count)), method = "lm", fill = NA, color = "red") + 
  geom_smooth(method = "lm", fill = NA, color = "black", linetype = "longdash")

请注意,上面的 alpha = 0.5 已被删除,因为 geom_smooth 不支持 ,您也可以使用 [=14] =] 而不是这样,这样您的红线将具有所需的透明度。

ggplot(aes(x = xcount, y = ycount), data = df) +  
  stat_smooth(aes(group = factor(count)), geom = "line", method = "lm", se = FALSE, color = "red", alpha=0.5) +
  stat_smooth(geom = "line", method = "lm", se = FALSE, color = "black", linetype = "longdash")