7

ドッジでバーを注文したいのですが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")

そして、問題をよりよく理解するためのプロットの例:

私が持っているもの:

私がしたいこと:

4

1 に答える 1

10

1 つのオプションは、バーが各グループ内にある順序を表す新しい変数を作成し、この変数を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")

ここに画像の説明を入力

于 2015-10-14T23:12:25.047 に答える