Frage ggplot2, geom_bar, ausweichen, Reihenfolge der Balken


Ich hätte gerne Bars in Dodge bestellt geom_bar. Weißt du, wie du damit umgehen sollst?

Mein Code:

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")

Und Beispielplots, um das Problem besser zu verstehen:

Was ich habe:

Was ich gerne hätte:


5
2017-10-14 13:44


Ursprung


Antworten:


Eine Option wäre, eine neue Variable zu erstellen, die die Reihenfolge der Balken in jeder Gruppe darstellt, und diese Variable als die Variable hinzuzufügen group Argument in Ihrer Handlung.

Viele Wege zu dieser Aufgabe, die Variable zu erstellen, hier ist eine Möglichkeit, die Funktion aus zu verwenden dplyr. Die neue Variable basiert auf dem Ranking ile in absteigender Reihenfolge in jedem klaster Gruppe. Wenn Sie Verbindungen in einer Gruppe haben, sollten Sie herausfinden, was Sie in diesem Fall tun möchten (in welcher Reihenfolge sollten die Balken in gegebenen Beziehungen sein?). Vielleicht möchten Sie das einstellen ties.method Argument in rank weg von der Vorgabe, wahrscheinlich zu "first" oder "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

Jetzt einfach hinzufügen group = position in deinen Handlungscode.

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

enter image description here


7
2017-10-14 23:12