r - 带有闪避的条形图的 geom_text 并填充缺失的类别
问题描述
使用mtcars
,我正在创建一个条形图cyl
并填充gear
。没有cyl==8 & gear==4的汽车。绘制时,我曾经position_dodge(preserve = "single")
保留条形的宽度。然后,使用geom_text
我向条形图添加标签。
library(ggplot)
library(dplyr)
df <- count(mtcars, cyl, gear)
ggplot(df, aes(x = factor(cyl), y = n, fill = factor(gear))) +
geom_col(position = position_dodge(preserve = "single")) +
geom_text(aes(label = n, y = n + .07), size = 5, vjust = 0,
position = position_dodge(width=.9))
两个问题出来了:
- 最后一组的文本标签关闭,即cyl==8
- 在最后一组中,绿色条的红色和蓝色条之间应该有间隙。相反,您会看到红色和蓝色条并排。
解决方案
这就是complete
fromtidyr
可以通过填充那些缺失值来提供帮助的地方。如果您愿意,您也可以vjust
完全使用而不是添加到您的 y 值。
library(ggplot2)
library(dplyr)
library(tidyr)
df <- count(mtcars, cyl, gear) %>%
complete(cyl, gear, fill = list(n = 0))
ggplot(df, aes(x = factor(cyl), y = n, fill = factor(gear))) +
geom_col(position = position_dodge()) +
geom_text(aes(label = n, y = n), size = 5, vjust = -0.5,
position = position_dodge(width=.9))
由reprex 包(v0.2.1)于 2019 年 1 月 17 日创建
推荐阅读
- django - 如何使用 django-mdeditor 在前端渲染 markdown 内容?
- python - Django:对象没有属性“注释”
- oracle - Oracle SGA_TARGET 大小
- android - Android 在主题为暗时更改品牌启动背景颜色
- vue.js - 如何在嵌套的 v-for 循环中获取正在进行的索引
- javascript - 在 mongoDB 中查找/搜索性能
- amazon-web-services - Amazon Connect“设置断开连接流”
- typescript - 从函数回调推断泛型类型参数
- python - 在 openCV 和 Python 中为形态学操作创建冒号作为内核/结构元素
- algorithm - N面掷骰子的最优策略