gpt4 book ai didi

r - 将汇总统计数据(甚至原始数据点)添加到闪避位置箱线图

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:42:42 26 4
gpt4 key购买 nike

假设您有以下数据集:

trt <- ifelse(runif(100)<0.5,"drug","placebo")
inj.site <- ifelse(runif(100)<0.5,"ankle","wrist")
relief <- 20 + 0.5*(inj.site=="ankle") + 0.5*(trt=="drug") + rnorm(100)
to.analyze <- data.frame(trt,inj.site,relief)

现在,我们的想法是绘制一个箱线图,其中 x 轴上有受伤部位,并有治疗箱:

bplot <- ggplot(to.analyze,aes(inj.site,relief,fill=trt)) + geom_boxplot(position="dodge")

很简单。但现在我想在框的顶部添加原始数据点。如果我没有带 position="dodge" 的盒子,这会很简单:

bplot + geom_point(aes(colour=trt))

但是,这会在方框之间绘制点,并且向该几何体添加 position="dodge" 似乎不起作用。我该如何调整它以便在方框上绘制点?

奖励:与使用 stat_summary(blah,y.fun=mean,shape="+") 叠加均值的情况相同,这有同样的问题。

最佳答案

如果我在这里错了,哈德利无疑会纠正我......

这是自然语法:

bplot + geom_point(aes(colour=trt), position=position_dodge(width=.5))

(position="dodge"会做同样的事情,没有参数。)

当我绘制它时,我得到了一些看起来像 position_jitter() 的东西,这大概也是您得到的。

出于好奇,我查看了源代码,在那里我找到了 pos_dodge() 函数。 (在 R 提示符下键入 pos_dodge 以查看它...)到此结束:

within(df, {
xmin <- xmin + width / n * (seq_len(n) - 1) - diff * (n - 1) / (2 * n)
xmax <- xmin + d_width / n
x <- (xmin + xmax) / 2
})

n 是数据框的行数。所以看起来它正在通过行索引的分数来躲避各个点!所以第一个点被闪避宽度/n,第二个点被闪避2 * width/n,最后一个被闪避n * width/n。

这显然不是您的意思,尽管您是这样说的。您可能无法手动重新创建闪避箱线图,或者使用不同的可视化方式,比如分面?

ggplot(to.analyze,aes(inj.site,relief)) + geom_boxplot() + facet_wrap(~ trt)

关于r - 将汇总统计数据(甚至原始数据点)添加到闪避位置箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1484472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com