【问题标题】:ggplot: Percentages when using facet_wrap()ggplot:使用 facet_wrap() 时的百分比
【发布时间】:2020-10-26 20:24:49
【问题描述】:

我有以下示例数据集:

library(tidyverse)

df <- data.frame(var1 = c("A", "B", "A", "B", "C", "A", "B", "A", "A", "B", "A"),
                 var2 = c("B", "B", "A", "B", "C", "A", "B", "B", "A", "A", "C"),
                 var3 = c("A", "B", "A", "C", "C", "A", "C", "C", "C", "C", "A"))

现在我想将三个变量绘制成条形图,并排在一起:

# Absolute values
df %>% pivot_longer(cols=c(var1, var2, var3)) %>%
  ggplot(aes(value)) + geom_bar(fill='lightblue', color='black')  + facet_wrap(.~ name) + coord_flip()

当我需要绝对数字时,我可以轻松做到这一点。但我不知道如何分别获取每个变量(var1、var2、var3)的百分比,以便每个条形图的值总和为 100%。

在下面的图中,所有三个图加在一起的条形总和为 100%。

# Percentages (not what I want)
df %>% pivot_longer(cols=c(var1, var2, var3)) %>%
  ggplot(aes(value)) + geom_bar(aes(y = (..count..)/sum(..count..)*100), fill='lightblue', color='black')  +facet_wrap(.~name) + coord_flip()

有人知道怎么做吗?

【问题讨论】:

标签: r ggplot2 facet-wrap


【解决方案1】:

也许是这个?

df %>% 
  pivot_longer(cols = c(var1, var2, var3)) %>%
  count(name, value) %>%
  group_by(name) %>%
  mutate(prop = n/sum(n)) %>%
  ggplot(aes(x = value, y = prop)) + 
  geom_col(fill = 'lightblue', color = 'black')  + 
  scale_y_continuous(labels = scales::percent) +
  facet_wrap(.~ name) + 
  coord_flip()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 2019-09-07
    相关资源
    最近更新 更多