我想通过subgroub在平均值上添加一颗钻石。 可以通过此函数创建样本数据:
sim <- function(ngroups, propsub, mu, sd){
sample <- list()
nnames <- names(ngroups)
for (i in 1:length(ngroups)) { sample[[i]] <- rnorm(ngroups[i], mean = mu[i], sd = sd) }
sub <- sample(size=sum(ngroups), x=names(propsub), prob=propsub, replace=TRUE)
dat <- data.frame(trt=factor(rep(nnames,times=ngroups), levels=nnames), y=unlist(sample), sub)
return(dat)
}
set.seed(123)
dtest <- sim(ngroups=c("kon"=50,"trt"=50), propsub=c("a"=0.5,"b"=0.5),
mu=c(0,0), sd=1)
请在此处查看示例数据的开头:
> head(dtest)
trt y sub
1 kon -0.56047565 b
2 kon -0.23017749 a
3 kon 1.55870831 a
4 kon 0.07050839 a
5 kon 0.12928774 b
6 kon 1.71506499 a
我能找到的最多是现在的情节:
library(ggplot2)
ggplot(data=dtest, aes(y=y, x=trt)) + geom_boxplot(aes(fill=sub)) + stat_summary(fun.y=mean, aes(group = sub), geom="point", shape=5, size=4)
所以有一些钻石,这些钻石象征着正确的意思,但处于错误的位置。
如何更改位置或告诉R不要仅将dtest$trt
用作子组,还要dtest$sub
?
答案 0 :(得分:0)
看起来stat_summary想要在trt的中间绘制菱形,geom_boxplot可以使用填充值将数据分成两部分。
这是另一种解决方案:
ggplot(data=dtest, aes(y=y, x=paste(trt,sub))) +
geom_boxplot(aes(fill=sub)) +
xlab("trt") +
stat_summary(fun.y=mean, geom="point", shape=5, size=4)