多个类别分组变量的条形图

时间:2019-02-19 08:32:41

标签: r bar-chart data-visualization

我是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

1 个答案:

答案 0 :(得分:0)

使用您的数据(请下次,复制并粘贴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)
)

我们可以这样做(upd):

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()

barchart

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