0

在我的数据集中标记样本大小时,我遇到以下问题:

library(ggplot2)
library(EnvStats)
library(tidyverse)

cars_pre= mtcars %>% mutate(time="Pre")
cars_post= mtcars %>% mutate(time="Post")

df= rbind(cars_pre,cars_post)
p <- ggplot(df,             aes(x = factor(cyl), y = mpg, fill = time) + 
  theme(legend.position = "none"))

ggplot(df,  aes( factor(cyl),  mpg)) + geom_boxplot(aes(fill = time) ) + 
  stat_n_text()

我遇到的问题是我有前/后组:但这些是相同的主题,所以当我绘制stat_n_text它时,我的样本量会增加一倍,因为它会将前样本和后样本加在一起(将它们视为单独的主题)。有没有办法更新n,所以它将是其值的一半(在图片中,我希望 n = 11、7 和 14 分别用于 cyl 4,5 和 6)?

在此处输入图像描述

4

2 回答 2

0

我想出了以下如何修改它:通过更改图形数据:

    library(splitstackshape)
    p<-ggplot(df,  aes( factor(cyl),  mpg)) + 
geom_boxplot(aes(fill = time) ) + 
          stat_n_text( )
    

然后从 ggplot 对象中提取数据:

    q <- ggplot_build(p)

修改样本量数据的标签

    q$data[[2]]= q$data[[2]] %>% cSplit(., 'label', '=') %>% mutate(label=paste0(label_1, "=", label_2/2))

向后绘制对象 q <- ggplot_gtable(q) plot(q)

在此处输入图像描述

于 2021-10-05T14:12:20.687 回答
0

根据打包开发人员的说法:有点破解,但没有实现对 N 的直接操作:

ggplot(df, aes( factor(cyl), mpg)) + geom_boxplot(aes(fill = time) ) + stat_n_text(data=cars_pre)
于 2022-01-24T22:46:58.103 回答