将ggplot2中的条形图从计数更改为基于构面的比例

时间:2016-12-06 01:32:06

标签: r ggplot2 dplyr

我已使用此代码:

data %>% 
gather(activity, ct, ActSwim:acteat) %>% 
filter(ct == 1) %>% 
count(activity, Location) %>% 
ggplot(., aes(activity, n)) +
geom_barplot(stat = "identity") + 
facet_wrap(~Location, ncol = 1)

创建此enter image description here

如何将这个从计数更改为比例,以解释每个地点调查不同人数的事实?我希望比例能够反映每个方面的比例(在这种情况下是位置)。

1 个答案:

答案 0 :(得分:0)

尽管这可能是重复的,但您有两种选择。

  1. ggplot为您完成转化。
  2. 自行汇总您的数据并将其传递给ggplot
  3. 我赞成#2,因为从长远来看它提供了更大的灵活性。

    library(dplyr)
    library(ggplot2)
    library(scales)
    
    data %>% 
      gather(activity, ct, ActSwim:acteat) %>% 
      filter(ct == 1) %>% 
      count(activity, Location) %>% 
      group_by(activity) %>%
      mutate(percentage = n/sum(n)) %>%
      ggplot(., aes(activity, percent)) +
      geom_col() + 
      facet_wrap(~Location, ncol = 1) +
      scale_y_continuous(labels = percent)