我试图通过调整 alpha 值来复制一些纵向数据的轨迹图,并突出显示随机主题轨迹。我已经完成了 95% 的工作,除了当 alpha = 0 时我似乎无法获得线图的完全透明度(它仍然显示为灰色)。有任何想法吗? - 数据在这里:
https://d.pr/f/iIoE8q+
谢谢你。
# Assign random alpha (0 [90%] or 1 [10%]) values
macs <- ddply(macs, .(id), function(x){
x$alpha = ifelse(runif(n = 1) > 0.9, 1, 0)
x
})
# Loess fit
fit <- loess(CD4 ~ time, data=macs, span = 0.5)
# Plot
ggplot(data = macs, aes(x = fitted(fit), y = resid(fit))) +
geom_point(aes(alpha=1), size = 0.5) +
geom_line(aes(alpha=alpha, group=id)) +
guides(alpha=FALSE)
最佳答案
如果您尝试重现第一个图表,x 轴应该是时间,y 轴是拟合的残差。所以需要合并原始数据macs
,包含 time
,残差在 fit
.我会用 broom::augment
为了那个原因。
对于 alpha 问题,您需要将值转换为因子,然后使用 scale_alpha_discrete
.
library(tidyverse)
library(broom)
fit %>%
augment() %>%
bind_cols(macs) %>%
mutate(alpha = factor(alpha)) %>%
ggplot(aes(time, .resid)) +
geom_line(aes(group = id, alpha = alpha)) +
scale_alpha_discrete(range = c(0, 1)) +
geom_point(size = 0.5) +
guides(alpha = FALSE) +
theme_bw()
关于r - ggplot alpha = 0 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49247417/