1

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

阅读此处建议的帖子后,所有工作都重新排序数据,这些示例都使用 facet_grid,但我希望我的“a”组在 2 个不同的行中,所以我需要使用 facte_wrap 我猜没有任何工作可以正确标记facet_wrap 中的 x 轴...我已经做到了这一点:

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)

在基础 RI 中,我试图为每个级别获取一个方面,就像这样,由 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")

现在有了正确的标签!谢谢奥史密斯!

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 没有解决方案,有没有其他方法可以将组放在单独的网格中?几天来我一直在努力解决这个问题......非常感谢任何帮助......非常感谢......

4

0 回答 0