我一直试图做一些似乎应该非常简单的事情,但我无法做到正确,用数值重新排序分组的geom_bar图 . 在这里阅读其他问题,建议使用重新排序因子,但这里似乎被忽略了 . 如果可能的话,我想避免像这样_2500389中使用grid.arrange,因为我喜欢这个方面,但我不明白还有什么可以尝试,任何建议都非常受欢迎 .

在阅读了建议的帖子here之后,所有重新排序数据的工作和这些示例都是使用facet_grid,但我希望我的"a"组在2个不同的行中,所以我需要使用facte_wrap我猜,没有什么可以正确标记x facet_wrap中的-axis ...我已经走到了这一步:

df <- data.frame(a = factor(c(1,1,2,1,2,2,1,2)), 
         b = factor(c(1,2,3,4,5,6,7,2)), 
         colb = as.character(c("#00AF4F", "#000FEF", "#004FAF", "#003FBF", "#008F6F", "#00DF1F", "#002FCF", "#000FEF")),
         c = factor(c(1,2,1,2,1,2,1,2)),
         value= 1:8)

在基础R中,我试图获得这样的每个级别的一个方面,用colb着色:

plot(df$b[df$a==1], df$value[df$a==1])
plot(df$b[df$a==2], df$value[df$a==2])

感谢下面的帮助,这是有效的......

df <- transform(df, category2 = factor(paste(a, b)))
df <- transform(df, category2 = reorder(category2, rank(value)))

ggplot(df, aes(category2, value, fill=colb)) +
  geom_bar(stat = "identity") +
 facet_grid(. ~ a, scales = "free_x") +
 scale_x_discrete(labels=df$b, breaks=df$category2)

但是当我尝试使用facet_wrap时,我无法使用b的正确标签:

ggplot(df, aes(category2, value, fill=colb)) +
 geom_bar(stat = "identity") +
 facet_wrap( ~ a, nrow=2, scales = "free_x")

现在有正确的标签!谢谢aosmith!

ggplot(df, aes(category2, value, fill=colb)) +
geom_bar(stat = "identity") + scale_x_discrete(labels=df$b, breaks=df$category2) + facet_wrap( ~ a, nrow=2, scales = "free_x")

我究竟做错了什么?如果没有facet_wrap的解决方案,还有其他方法可以将组放在单独的网格中吗?我已经在这几天坚持不懈了......任何帮助都非常感谢...非常感谢...