ggplot2,geom_bar,闪避,条形顺序

时间:2015-10-14 13:44:38

标签: r ggplot2 geom-bar

我希望在道奇geom_bar中订购酒吧。你知道怎么处理吗?

我的代码:

ttt <- data.frame(typ=rep(c("main", "boks", "cuk"), 2),
                  klaster=rep(c("1", "2"), 3),
                  ile=c(5, 4, 6, 1, 8, 7))

ggplot()+
    geom_bar(data=ttt, aes(x=klaster, y=ile, fill=typ),
             stat="identity", color="black", position="dodge")

示例图可以更好地理解问题:

我有什么:

我想拥有什么:

1 个答案:

答案 0 :(得分:8)

一个选项是创建一个新变量来表示每个组中条形图的顺序,并将该变量添加为图中的group参数。

使用 dplyr 中的函数,可以使用很多方法来创建变量。新变量基于每个ile组内降序排列klaster。如果你在任何一个团体中都有联系,你会想知道在这种情况下你想要做什么(这些律师应该用什么顺序给予关系?)。您可能希望将ties.method参数设置为rank远离默认值,可能设置为"first""random"

library(dplyr)
ttt = ttt %>% 
    group_by(klaster) %>% 
    mutate(position = rank(-ile))
ttt
Source: local data frame [6 x 5]
Groups: klaster [2]

     typ klaster   ile  rank position
  (fctr)  (fctr) (dbl) (dbl)    (dbl)
1   main       1     5     3        3
2   boks       2     4     2        2
3    cuk       1     6     2        2
4   main       2     1     3        3
5   boks       1     8     1        1
6    cuk       2     7     1        1

现在只需将group = position添加到您的地图代码中。

ggplot() +
    geom_bar(data=ttt, aes(x=klaster, y=ile, fill=typ, group = position),
                     stat="identity", color="black", position="dodge")

enter image description here