r - 条形图上的标签在 R 中无法正常工作
问题描述
tibble::tribble(
~Course.lvl, ~GRDE_CODE, ~n, ~rel.percent,
"100-level", "A", 95, "22.1%",
"100-level", "A-", 30, "7%",
"100-level", "B", 69, "16.1%",
"100-level", "B-", 24, "5.6%",
"100-level", "B+", 20, "4.7%",
"100-level", "C", 70, "16.3%",
"100-level", "C-", 16, "3.7%",
"100-level", "C+", 25, "5.8%",
"100-level", "D", 33, "7.7%",
"100-level", "D+", 3, "0.7%",
"100-level", "F", 44, "10.3%",
"200-level", "A", 24, "15.2%",
"200-level", "A-", 12, "7.6%",
"200-level", "B", 22, "13.9%",
"200-level", "B-", 10, "6.3%",
"200-level", "B+", 17, "10.8%",
"200-level", "C", 14, "8.9%",
"200-level", "C-", 15, "9.5%",
"200-level", "C+", 13, "8.2%",
"200-level", "D", 13, "8.2%",
"200-level", "D+", 3, "1.9%",
"200-level", "F", 15, "9.5%",
"300-level", "A", 32, "36.8%",
"300-level", "A-", 11, "12.6%",
"300-level", "B", 8, "9.2%",
"300-level", "B-", 9, "10.3%",
"300-level", "B+", 10, "11.5%",
"300-level", "C", 6, "6.9%",
"300-level", "C-", 1, "1.1%",
"300-level", "C+", 7, "8%",
"300-level", "F", 3, "3.4%",
"400-level", "A", 8, "66.7%",
"400-level", "A-", 1, "8.3%",
"400-level", "B+", 2, "16.7%",
"400-level", "C-", 1, "8.3%"
)
ggplot(datagra, aes( y=n, x=as.factor(GRDE_CODE))) +
geom_bar(stat = 'identity', aes(fill=Course.lvl), position = "dodge") +
geom_text(
aes(label = rel.percent,
y = n),
vjust = -0.2, size = 3,
position = position_dodge(0.9),
color = "black") +
labs(title = "MATH Grade Distribution by Level -Fall 2019 & Fall 2020",
y="Number of Students",
x ="",) +
theme_minimal()
这给了我这张图
我需要标签与实际条形一致。希望以上内容可以提供足够的数据来帮助reprex。
不知道出了什么问题,我尝试过使用 v 和 h just 和 position dodge,我尝试翻转坐标并尝试了几个我以不同方式调用标签的示例。我希望有一种方法甚至可以用相关的百分比/数字指向相应的栏本身
解决方案
试试这个;它对我有用。
我调整了百分比的类别,因为这样对我来说似乎总是运行得更顺畅一些。
t <- tibble::tribble(
~Course.lvl, ~GRDE_CODE, ~n, ~rel.percent,
"100-level", "A", 95, "22.1%",
"100-level", "A-", 30, "7%",
"100-level", "B", 69, "16.1%",
"100-level", "B-", 24, "5.6%",
"100-level", "B+", 20, "4.7%",
"100-level", "C", 70, "16.3%",
"100-level", "C-", 16, "3.7%",
"100-level", "C+", 25, "5.8%",
"100-level", "D", 33, "7.7%",
"100-level", "D+", 3, "0.7%",
"100-level", "F", 44, "10.3%",
"200-level", "A", 24, "15.2%",
"200-level", "A-", 12, "7.6%",
"200-level", "B", 22, "13.9%",
"200-level", "B-", 10, "6.3%",
"200-level", "B+", 17, "10.8%",
"200-level", "C", 14, "8.9%",
"200-level", "C-", 15, "9.5%",
"200-level", "C+", 13, "8.2%",
"200-level", "D", 13, "8.2%",
"200-level", "D+", 3, "1.9%",
"200-level", "F", 15, "9.5%",
"300-level", "A", 32, "36.8%",
"300-level", "A-", 11, "12.6%",
"300-level", "B", 8, "9.2%",
"300-level", "B-", 9, "10.3%",
"300-level", "B+", 10, "11.5%",
"300-level", "C", 6, "6.9%",
"300-level", "C-", 1, "1.1%",
"300-level", "C+", 7, "8%",
"300-level", "F", 3, "3.4%",
"400-level", "A", 8, "66.7%",
"400-level", "A-", 1, "8.3%",
"400-level", "B+", 2, "16.7%",
"400-level", "C-", 1, "8.3%"
) %>%
mutate(rel.percent = gsub('\\%', '',rel.percent),
rel.percent = as.numeric(rel.percent))
t %>%
ggplot(aes(y=n, x=GRDE_CODE, fill = Course.lvl, group = Course.lvl))+
geom_bar(stat = 'identity', position = "dodge") +
geom_text(aes(label= paste0(rel.percent, "%")), position=position_dodge(width=0.9), vjust =-.5, size=3) +
labs(title = "MATH Grade Distribution by Level -Fall 2019 & Fall 2020",
y="Number of Students",
x ="") +
theme_minimal() +
scale_fill_manual(values=c("purple","green","steelblue", "grey5"))
推荐阅读
- ms-access - 循环记录集并添加到字典/集合:项目键存在
- python - Tensorflow Rasperry PI 零 W 上的 Traceback(最近一次调用最后一次)错误
- javascript - 如何使用 i18next (node.js) 提取字符串常量以进行本地化?
- c++ - C++ 编译器 (cl) 看不到具有相同子方法名称的父虚拟方法
- c++ - eglSwapBuffers 永远不会返回
- android - Android:错误:找不到 com.android.support:appcompat-v7:28.0.0
- c# - User.Identity.Name 每次使用基于 MongoDB 令牌的身份验证时为空
- laravel - 如何使用 carbon 或 map 函数来格式化 created_at?
- c++ - 为什么我会收到错误 C2143 语法错误:缺少 ';' 前 '*'?
- c# - 基于 ViewModel 属性的条件 ControlTemplate