ggplot:使用facet_wrap中的数值重新排序两个因子时的正确标注(不是facet_grid,如其他问题所示)

时间:2015-10-27 03:21:19

标签: plot ggplot2 factors geom-bar

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

阅读建议的帖子question之后,所有重新排序数据的工作和这些示例都是使用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)

在基地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的解决方案,还有其他方法可以将组放在单独的网格中吗?我已经在这几天敲打我的头了......任何帮助都非常感谢...非常感谢你...

0 个答案:

没有答案