代码之家  ›  专栏  ›  技术社区  ›  oneself

以反方向显示标签的堆叠条形图

  •  4
  • oneself  · 技术社区  · 6 年前

    我正在尝试创建一个标签位于条形图中间的堆叠条形图。由于某些原因,标签被放置在第二列(“eIC”)的错误位置。

    代码如下:

    Role.Type=c("Other", "eIC", "eIC", "Manager", "eIC", "eIC", "Design", "eIC", "eIC", "Other", "Product", "Other", "Manager", "eIC", "eIC")
    Role=c('Agile Coach', 'Android', 'Backend', 'Eng Manager', 'Data', 'Data Scientist', 'Design', 'iOS', 'ML', 'Operations', 'Product', 'Quality', 'Director', 'User Research', 'Web')
    People=c(3, 3, 20, 11, 10, 7, 2, 2, 21, 1, 11, 3, 2, 2, 5)
    df <- data.frame(Role.Type, Role, People)
    
    g <- ggplot(df, aes(Role.Type, People)) +
           geom_col(aes(fill=Role), position='stack') +
           geom_text(aes(label=Role), size=3, position=position_stack(vjust=.5)) +
           scale_y_continuous(breaks=seq(0, 100, by=10)) +
           labs(title="Team Role Breakdown", y="People", x="Role Type")
    g
    

    结果呢 enter image description here

    1 回复  |  直到 6 年前
        1
  •  4
  •   Saewon Park    6 年前

    只需在第一个ggplot()函数中输入“fill=Role”。这将提供所需的打印,其中文本标签位于正确的位置:

    g <- ggplot(df, aes(Role.Type, People, fill = Role)) +
      geom_col(position='stack') + 
      geom_text(aes(label=Role), size=3, position=position_stack(vjust=.5)) +
      scale_y_continuous(breaks=seq(0, 100, by=10)) + 
      labs(title="Team Role Breakdown", y="People", x="Role Type")
    

    enter image description here