2017-02-14 2 views
3

Hier ist einig R-Code und der Graph es produziert:R - gruppierten Bar Grundstück Bestellung innerhalb von Gruppen

library(ggplot2) 
year <- c("1950", "1950", "1960", "1960", "1970", "1970") 
weight <- c(15, 10, 20, 25, 18, 20) 
name <- c("obj1", "obj2", "obj3", "obj4", "obj5", "obj1") 
object.data <- data.frame(year, weight, name) 
ggplot(object.data, aes(x=factor(year), y=weight, 
    fill=reorder(name, -weight))) + geom_bar(stat="identity", position="dodge") 

enter image description here

Wie stelle ich sicher, dass die Stäbe von den höchsten sortiert werden zum niedrigsten (von weight) innerhalb jeder einzelnen Gruppe?

Beachten Sie, dass obj1 zweimal unter zwei verschiedenen Daten mit zwei verschiedenen Werten weight angezeigt wird.

Antwort

3
# Create a new variable with your desired order. 
object.data1 = object.data %>% 
    group_by(year) %>% 
    mutate(position = rank(-weight)) 

# Then plot 
ggplot(object.data1, 
    aes(x=year, y=weight, fill=reorder(name, -weight), group = position)) + 
    geom_bar(stat="identity", position="dodge") 

enter image description here

Verwandte Themen