ggplot:使用coord_flip在分组条形图中反转的条形顺序

时间:2018-04-10 06:21:13

标签: r ggplot2

使用here中的代码,我意识到了一些我不理解的东西:

library(ggplot2)

LoTRdata <- structure(list(Film = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 3L, 
3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("The Fellowship Of The Ring", 
"The Return Of The King", "The Two Towers"), class = "factor"), 
    Race = structure(c(1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 
    3L, 3L, 1L, 1L, 2L, 2L, 3L, 3L), .Label = c("Elf", "Hobbit", 
    "Man"), class = "factor"), Gender = structure(c(1L, 2L, 1L, 
    2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L
    ), .Label = c("Female", "Male"), class = "factor"), Words = c(1229L, 
    971L, 14L, 3644L, 0L, 1995L, 331L, 513L, 0L, 2463L, 401L, 
    3589L, 183L, 510L, 2L, 2673L, 268L, 2459L)), .Names = c("Film", 
"Race", "Gender", "Words"), class = "data.frame", row.names = c(NA, 
-18L))

p <- ggplot(LoTRdata, aes(x = Race, y = Words, fill = Film))
p + geom_bar(stat = "identity", position = "dodge") +
  coord_flip() + guides(fill = guide_legend())

enter image description here

为什么条形顺序颠倒了?如何更改条形的顺序

我知道我可以使用guides(fill = guide_legend(reverse = TRUE))但是条形图和图例的顺序都是相反的(图例不再按字母顺序排列)。

与此question相比,每个分组条的顺序取决于最高出现次数,我只想知道如何颠倒每个组的顺序(就像我一样的顺序)不会使用coord_flip)。

1 个答案:

答案 0 :(得分:1)

p <- ggplot(LoTRdata, aes(x = Race, y = Words, fill = Film))
p + geom_bar(stat = "identity", position =  position_dodge2(reverse=TRUE)) +
coord_flip() 

也许您可以开始使用position_dodge2函数