通过多种因素对geom_bar中的条形图进行重新排序

时间:2017-08-23 12:58:59

标签: r ggplot2 geom-bar

我希望我的情节按其最高列值进行排序,但是对于多个变量:首先是vs,然后是s,然后是我们,以及其内部的值。即第一个条形图显示ID 14,在VS中有2个计数,然后是ID 10,然后是ID 16(因为10的S值高于16)。 我遇到了重新排序功能。但我的代码甚至没有为一个值重新排序......

# use data from library(MM) and melt
data(wilson, package = "MM")
non_met <- as.data.frame(non_met)
non_met$ID <- seq(1,nrow(non_met))
mhouse <- melt(non_met, id=c("ID"))

ggplot(mhouse, aes(x=reorder(ID, -value), y=value, fill = variable)) + 
  geom_bar(stat = "identity", lwd=0.5, color="white")

接下来我尝试改变我的因素,但这只是反转着色

mhouse$variable <- factor(mhouse$variable, levels=c("VS","S","US"))
head(mhouse[order(mhouse$variable, -mhouse$value),])

#   ID variable value
#50 14       VS     2
#45  9       VS     1
#46 10       VS     1
#52 16       VS     1
#37  1       VS     0
#38  2       VS     0

(仍然不是正确的顺序)

1 个答案:

答案 0 :(得分:0)

是的,这是一个解决方案:

data(wilson, package = "MM")
non_met <- as.data.frame(non_met)
non_met$ID <- seq(1,nrow(non_met))
non_met <- non_met[order(-non_met$VS, -non_met$S, -non_met$US),]
non_met$order <- seq(1,nrow(non_met))
mhouse <- melt(non_met, id=c("ID", "order"))

ggplot(mhouse, aes(x=reorder(ID, order), y=value, fill = variable)) + 
  geom_bar(stat = "identity", lwd=0.5, color="white")

但是我对这个问题的任何其他想法持开放态度