gpt4 book ai didi

r - 如何在ggplot2的箱线图中添加每组观察数和中位数

转载 作者:行者123 更新时间:2023-12-04 07:28:02 25 4
gpt4 key购买 nike

可能我的问题可能是重复的,但我无法在 ggplot2 中做到这一点( tidyverse ) 仅?
我想在 ggplot2 中为箱线图的每个组/元素添加观察数和中位数的计数
这是reprex

library(tidyverse)

set.seed(123)

df <- iris %>% sample_n(100)

df %>%
mutate(grp = ifelse(Sepal.Width > mean(Sepal.Width), 'Gr-1', 'Gr-2')) %>%
ggplot(aes(x = Species, y = Sepal.Length, fill = grp)) +
geom_boxplot() +
coord_flip() +
facet_wrap(. ~ grp)

创建于 2021-06-24 由 reprex package (v2.0.0)
所有 6 个盒子的预期结果都是这样的
enter image description here

最佳答案

我认为您可以使用以下来自 article 的解决方案.为此,我们可以使用 stat_summary功能,但对于它的 fun.data我们必须创建一个自定义函数来计算计数和中位数。需要注意的是,我们使用的是geom_textstat_summary所以它需要 xylabel争论。所以当我们写我们的自定义 stat_box_sum函数,我们必须确保生成的数据框具有这些美学作为列名:

stat_box_sum <- function(y, upper_limit = max(iris$Sepal.Length)) {
DF <- data.frame(
y = max(y),
label = paste("N:", length(y), "\n",
"Median:", median(y), "\n")
)
DF
}

stat_box_sum(iris$Sepal.Length)
y label
1 7.9 N: 150 \n Median: 5.8 \n

df %>%
mutate(grp = ifelse(Sepal.Width > mean(Sepal.Width), 'Gr-1', 'Gr-2')) %>%
ggplot(aes(x = Species, y = Sepal.Length, fill = grp)) +
geom_boxplot() +
coord_flip() +
facet_wrap(. ~ grp) +
stat_summary(
fun.data = stat_box_sum,
geom = "text",
hjust = 0.7,
vjust = 0.7)
enter image description here
我想唯一剩下的问题是我试图尽快弄清楚标签的调整。

关于r - 如何在ggplot2的箱线图中添加每组观察数和中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68117425/

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