R语言 ggplot:将平均值添加到堆叠条形图(次轴)

41zrol4v  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(181)

1.我正在处理调查数据,现在我正在尝试向堆叠条形图添加文本标签。我做错了什么?

# Sample Data
n <- 100
df <- data.frame(item = sample(paste("Item", 1:4), size=n, replace=TRUE),
                 value = sample(1:5, size=n, replace=TRUE))

# Create stacked barplot
df %>% group_by(item) %>%
  count(value) %>%
  mutate(percent = 1 / sum(n) * n,
         answer = factor(value, ordered=TRUE)) %>%
  
  ggplot(aes(x = item, y = percent, fill = fct_rev(answer))) + 
    geom_col() +
    scale_y_continuous(labels = scales::percent) +
    geom_text(aes(label = round(percent, 1))) +
    labs(fill = "Answer")

1.我应该为每一项添加额外的平均值。有没有办法添加一个范围从1到5的次轴,并将每一项的平均值作为点添加到图中?(即使我知道,从统计学上来说,这有点可疑,因为100%并不真正对应于最大值5)

e0bqpujr

e0bqpujr1#

您需要指定标签的位置;此时,您的代码将它们放置在各自的位置(即,0.2放置在y轴上的0.2处,0.3放置在y轴上的0.3处),但如果您添加position = position_stack(),则应解决您的第一个问题,例如:

library(tidyverse)
n <- 100
df <- data.frame(item = sample(paste("Item", 1:4), size=n, replace=TRUE),
                 value = sample(1:5, size=n, replace=TRUE))

# Create stacked barplot
df %>% group_by(item) %>%
  count(value) %>%
  mutate(percent = 1 / sum(n) * n,
         answer = factor(value, ordered=TRUE)) %>%
  
  ggplot(aes(x = item, y = percent, fill = fct_rev(answer))) + 
  geom_col() +
  scale_y_continuous(labels = scales::percent) +
  geom_text(aes(label = round(percent, 1)),
            position = position_stack(vjust = 0.5)) +
  labs(fill = "Answer")

创建于2022年11月30日,使用reprex v2.0.2

相关问题