根据多个因素对 geom_bar 中的柱重新排序
Reorder bars in geom_bar by multiple factors
我希望我的图按其最高列值排序,但对于多个变量:首先是 vs,然后是 s,然后是 us 和 within 它的值。 IE。第一个条显示 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")
但我对关于该问题的任何其他想法持开放态度
我希望我的图按其最高列值排序,但对于多个变量:首先是 vs,然后是 s,然后是 us 和 within 它的值。 IE。第一个条显示 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")
但我对关于该问题的任何其他想法持开放态度