我一直在努力做一些似乎应该非常简单的事情,但是我无法做到正确,用数值重新排序分组的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的解决方案,还有其他方法可以将组放在单独的网格中吗?我已经在这几天敲打我的头了......任何帮助都非常感谢...非常感谢你...