ggplot:使用图中数据点数量更新分面标签

3

我有一个数据集 data,可以按照以下要求绘制图表:

#Data
data <- data.frame(level = c(1,2,3,5,2,4,3,1,3), 
                   pay1 = c(10,21,32,12,41,21,36,14,17), 
                   pay2 = c(26,36,5,6,52,12,18,17,19))

#Plot
data %>% pivot_longer(-level) %>%
  ggplot(aes(x = name, y = value))+
  geom_boxplot() + 
  facet_wrap(~ level, scales = "free_x") +
  theme_bw()

我希望根据另一个变量level的频率更新facet标签。

在此输入图片描述

table(data$level)
# 1 2 3 4 5 
# 2 2 3 1 1 

如何将Facet标签更新为1(n=2)2(n=2)3(n=3)4(n=1)5(n=1)

1个回答

5

我只需要使用 mutate 调用,使用 pasten() 重新命名因子水平:

data %>% 
  pivot_longer(-level) %>%
  group_by(level, name) %>%
  mutate(level = paste0(level, " (n = ", n(), ")")) %>%
  ggplot(aes(x = name, y = value))+
  geom_boxplot() + 
  facet_wrap(~ level, scales = "free_x") +
  theme_bw()

enter image description here


这个答案可行,但只是一个变通方法。如果我多次运行代码,(n = x)会被多次添加。有更好的方法吗? - Outsider

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接