繁体   English   中英

通过多个因素对geom_bar中的条重新排序

[英]Reorder bars in geom_bar by multiple factors

我希望以最高列值对图进行排序,但要使用多个变量:首先是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

(仍然不是正确的顺序)

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

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

但我对这个问题有其他想法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM