r - 多个类别分组变量的条形图
问题描述
我是 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
解决方案
使用您的数据(请在下次复制并粘贴来自 的输出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
和删除文本标签。
推荐阅读
- python-2.7 - 在 boto3 client.copy 中,如何将密钥替换为密钥地址的更新版本?
- google-sheets - 从谷歌表格中的 IMPORTXML 转换为双精度
- java - 在 Java 中返回接口的 com.badlogic.gdx.utils.Array<>
- excel - 在第二张纸上,我想使用 yes no msgbox 添加一行,当该行出现时,我希望它已经有文本
- javascript - 过滤嵌套对象
- javascript - 动态处理 React 可重用组件样式?
- c# - JArray 替换条件匹配的值
- json - 如何使用“For Each”在 LogicApp 中检索和更新 JSON 值
- python - Python 3:错误:ValueError:输入包含 NaN、无穷大或对于 dtype('float64')来说太大的值
- python - tf.nn.in_top_k 给出错误,我不知道为什么:NotFoundError:找不到节点的有效设备。节点:{{node InTopKV2}}