gpt4 book ai didi

r - 如何使用 geom_boxplot 绘制均值而不是中值?

转载 作者:行者123 更新时间:2023-12-04 17:06:51 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Use mean in ggplot boxplots instead of median

(1 个回答)



How to plot mean and standard error in Boxplot in R

(2 个回答)



Changing whisker definition in geom_boxplot

(3 个回答)


3年前关闭。




出于某种奇怪的原因,我需要创建一个箱线图,其中中间线是 平均值 而不是中位数。我已经检查了 stackoverflow 并找到了添加平均线的示例,但不完全是我需要的。我尝试使用 stat_smooth 但没有骰子。有任何想法吗?

代码如下:

dust <- c(4.5, 3.7, 5, 5.2, 8.5, 6.6, 4.7, 5, 5.7, 4.3, 2.3, 7.6, 5.2, 
6, 8.7, 7.5, 7.7, 11, 9, 6.5, 8.7, 5, 2.2, 7.5, 7.5, 3.5)

wind <- c("Present", "Absent", "Absent", "Absent", "Absent", "Absent",
"Absent", "Absent", "Absent", "Present", "Absent", "Absent",
"Present", "Present", "Absent", "Absent", "Absent", "Absent",
"Absent", "Present", "Absent", "Present", "Absent", "Absent",
"Absent", "Present")

df <- data.frame(dust,wind)

plot <- ggplot(data=df,aes(x=wind,y=dust))+geom_boxplot()+stat_smooth()

plot

最佳答案

有几种方法可以做到这一点:

1.使用中间

最简单的方法是简单地调用:

plot <- ggplot(data = df, aes(y = dust, x = wind)) + 
geom_boxplot(aes(middle = mean(dust))

2.使用fatten = NULL

您还可以利用 fatten geom_boxplot() 中的参数.这控制了中线的粗细。如果我们将其设置为 NULL ,那么它不会绘制中线,我们可以使用 stat_summary 为平均值插入一条线.
plot <- ggplot(data = df, aes(y = dust, x = wind)) + 
geom_boxplot(fatten = NULL) +
stat_summary(fun.y = mean, geom = "errorbar", aes(ymax = ..y.., ymin = ..y..),
width = 0.75, size = 1, linetype = "solid")
print(plot)

使用 fatten = NULL 输出

enter image description here

如您所见,上述方法绘制得很好,但是当您评估代码时,它会输出一些警告消息,因为 fatten估计真的不会拿 NULL值(value)。

好处是这种方法可能更灵活一些,因为我们实际上是在“删除”中线并添加我们想要的任何内容。例如,我们也可以选择保留中位数,并将平均值添加为虚线。

关于r - 如何使用 geom_boxplot 绘制均值而不是中值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50112033/

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