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