我是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
答案 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()
但是最好设置show.legend = T
并删除文本标签。