如何在ggplot2,R中指定所有因素相同的颜色和透明度?
How to specify all factors the same colour and transparency in ggplot2, R?
我正在绘制由因子 count
分隔的多条回归线。
- 我需要所有线条都具有相同的颜色和透明度(例如颜色 = 红色,alpha = 0.5)
- 为图表中的所有线绘制一个平均值,例如黑色虚线)
我尝试将颜色 + 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")
我正在绘制由因子 count
分隔的多条回归线。
- 我需要所有线条都具有相同的颜色和透明度(例如颜色 = 红色,alpha = 0.5)
- 为图表中的所有线绘制一个平均值,例如黑色虚线)
我尝试将颜色 + 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")