【问题标题】:geom_text with dodged barplot AND fill a missing category带有闪避的条形图的 geom_text 并填充缺失的类别
【发布时间】:2019-01-17 18:42:47
【问题描述】:

使用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))

两个问题出来了:

  1. 最后一组的文本标签已关闭,即 cyl==8
  2. 在最后一组中,绿色条的红色和蓝色条之间应该有间隙。相反,您会看到红色和蓝色条并排。

【问题讨论】:

    标签: r ggplot2 bar-chart


    【解决方案1】:

    这就是tidyr 中的complete 可以帮助填补这些缺失值的地方。如果您愿意,您也可以完全使用 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 package (v0.2.1) 于 2019-01-17 创建

    【讨论】:

      猜你喜欢
      • 2016-01-09
      • 2011-08-26
      • 2012-09-24
      • 2020-08-20
      • 1970-01-01
      相关资源
      最近更新 更多