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

R: 如何对分组条形图进行客户重新排序?[副本]

  •  0
  • ithoughtso  · 技术社区  · 2 年前

    我花了几个小时在stackoverflow.com上搜索重新排序分组条形图,但没有找到我想要的答案。我想更改条形图和图例的顺序,以按该顺序打印“之前”、“期间”和“之后”,但R一直按字母顺序打印因子,如“之后”、“之前”和“期间”,不知道如何修复。

    如果有人能帮助我,我将心存感激!

    这是我想更改的R显示顺序。 enter image description here

    这是我的代码:

    df <- data.frame(time = c("after","before","during","before","after","before","during","after","after","during", "during","after","before","during","before"),
    variable = c("granny", "red del", "other", "golden", "star", "granny", "red del", "other", "golden", "star", "granny", "red del", "other", "golden", "star"),
    value = c(34,66,7,12,99,35,66,82,55,48, 27,55,82,42,26))
    
    df$time = as.factor(df$time)
    df$variable = as.factor(df$variable)
    
    ggplot(df, aes(x = variable, y = value, fill = time)) + 
    geom_bar(position='dodge', stat='identity') +
    theme_minimal() +
    labs(x=' ', y=' ', title=' ') +
    theme(plot.title = element_text(hjust=0.5, size=20, face='bold')) +
    theme_bw() + 
    theme(axis.line = element_line(color='black'),
    plot.background = element_blank(),
    panel.grid.minor = element_blank(),
    panel.grid.major = element_blank())
    
    1 回复  |  直到 2 年前
        1
  •  2
  •   user12256545    2 年前

    如果没有指定的顺序,ggplot将只按字母顺序排列任何字符变量。要指定因子级别的顺序,最简单的方法就是在 factor 作用

    df$time = factor(df$time,levels = c("before","during", "after"))
    
    

    而不是

    df$time = as.factor(df$time)
    
    

    enter image description here