首页 > 解决方案 > 多个类别分组变量的条形图

问题描述

我是 R 新手,我想为从另一个表派生的多个类别的数据绘制条形图。我正在尝试使用ggplot()但不太清楚如何使用它创建分段条形图。

我有一个关于许多学生的数据框,他们在不同部分的测试中回答了特定问题。每个部分的问题总数也不同。数据看起来像这样。

我想构建一个分段条形图,其中每个部分作为 x 轴,每一行的值彼此堆叠(带有标签)。

任何帮助将非常感激!

  Section Neither.1.nor.2 Only.1 Only.2 Both.1.2
1       A              12      5      3        6
2       B              55     15      2       26
3       C              17     27     18       33
4       D              31     32     56       12

标签: rbar-chartdata-visualization

解决方案


使用您的数据(请在下次复制并粘贴来自 的输出dput(yourdata)):

library(tidyverse)

tib <- tibble(
  Section           = LETTERS[1:4],
  'Neither 1 nor 2' = c(12, 55, 17, 31),
  'Only 1'          = c(5, 15, 27, 32),
  'Only 2'          = c(3, 2, 18, 56),
  'Both 1 & 2'      = c(6, 26, 33, 12)
)

我们可以这样做(更新):

tib %>%
  gather(key = 'Category', value = 'Value', -Section) %>% 
  mutate(Category = factor(Category, unique(Category))) %>%
  ggplot(aes(x = Section, y = Value, fill = Category, label = Value)) +
  geom_bar(position = 'stack', stat = 'identity') +
  geom_text(position = 'stack', vjust = 1.5, colour = 'gray25', size = 2) +
  scale_fill_brewer(type = 'qual', palette = 'Accent') #+
  #ggthemes::theme_tufte()

条形图

但最好设置show.legend = T和删除文本标签。


推荐阅读