R 用平均密度绘制个体密度图

R 用平均密度绘制个体密度图,r,ggplot2,R,Ggplot2,我想将两个不同类别的密度绘制为直线,然后将每个类别的平均密度叠加为alpha。以下代码显示了仅针对疾病和治疗总结的“平均”密度。我如何用代表每个个体密度的线覆盖它(最好是红色表示疾病=1,蓝色表示疾病=2)?i、 e.每种疾病一行,示例中的治疗组合: # Initialise data frame in melted form # 2 disease categories # 10 people from each disease # 2 treatments given

我想将两个不同类别的密度绘制为直线,然后将每个类别的平均密度叠加为alpha。以下代码显示了仅针对疾病和治疗总结的“平均”密度。我如何用代表每个个体密度的线覆盖它(最好是红色表示疾病=1,蓝色表示疾病=2)?i、 e.每种疾病一行,示例中的治疗组合:

# Initialise data frame in melted form
    # 2 disease categories
    # 10 people from each disease
    # 2 treatments given to each individual
    # 25 variables with measured values per person/treatment combination
set.seed(6737334)
df <- data.frame(id = 1:(2*10*2*25), var = rep(1:25, times=2*10), 
                 val = rnorm(2*10*2*25),
                 disease = as.factor(rep(1:2, each=2*10*25)),
                 treat = as.factor(rep(1:2, times=10, each=25)))

plot <- ggplot(df, aes(x=val, fill=disease)) + geom_density(alpha=.3) +
    facet_grid(treat ~ .)

print(plot)
#以熔融形式初始化数据帧
#2种疾病类别
#每种疾病10人
#每个人接受2次治疗
#25个变量,每个人/治疗组合的测量值
种子集(6737334)

df如果我正确理解你的问题,这可能就是你想要的:

ggplot(df) + 
  geom_density(aes(x=val, color=disease)) +
  geom_density(aes(x=val), color=NA, fill="grey", alpha=.5) +
  facet_grid(treat ~ .) +
  theme_bw()
其中:

结果证明,该方法是利用
组的
选项
aes()
交互。请参阅下面的完整示例。感谢您在上面的@Jaap中指出了正确的方向

# Initialise data frame in melted form
    # 2 disease categories
    # 10 people from each disease
    # 2 treatments given to each individual
    # 25 variables with measured values per person/treatment combination
set.seed(6737334)
df <- data.frame(id = 1:(2*10*2*25), var = rep(1:25, times=2*10),
                 test = as.factor(rep(1:(2*10), each=25)),
                 val = rnorm(2*10*2*25),
                 disease = as.factor(rep(1:2, each=2*10*25)),
                 treat = as.factor(rep(1:2, times=10, each=25)))

ggplot(df) + 
    geom_density(aes(x=val, group=interaction(test,disease), colour=disease)) +
    geom_density(aes(x=val, fill=disease), alpha=.5) +
    guides(fill=guide_legend(title="mean")) +     # else legend title 'NA'
    facet_grid(treat ~ .)
#以熔融形式初始化数据帧
#2种疾病类别
#每种疾病10人
#每个人接受2次治疗
#25个变量,每个人/治疗组合的测量值
种子集(6737334)

不完全是。我希望每种疾病有10行和一个“填充”,即在绘图上有20行和2个填充。每一行对应一种疾病治疗组合的密度。不客气。很高兴让你走上了正确的道路。我没有时间早些回应。你现在可以接受自己的答案了。
# Initialise data frame in melted form
    # 2 disease categories
    # 10 people from each disease
    # 2 treatments given to each individual
    # 25 variables with measured values per person/treatment combination
set.seed(6737334)
df <- data.frame(id = 1:(2*10*2*25), var = rep(1:25, times=2*10),
                 test = as.factor(rep(1:(2*10), each=25)),
                 val = rnorm(2*10*2*25),
                 disease = as.factor(rep(1:2, each=2*10*25)),
                 treat = as.factor(rep(1:2, times=10, each=25)))

ggplot(df) + 
    geom_density(aes(x=val, group=interaction(test,disease), colour=disease)) +
    geom_density(aes(x=val, fill=disease), alpha=.5) +
    guides(fill=guide_legend(title="mean")) +     # else legend title 'NA'
    facet_grid(treat ~ .)