如何通过R中的组对geom_boxplot中的x轴重新排序?

R. *_*Ben 4 plot r ggplot2 box

我希望能够通过每个组的平均值对ggplot中的箱线图的x轴重新排序。

例如,如果我有此数据框:

L3 <- LETTERS[1:3]
fac <- sample(L3, 50, replace = TRUE)
(d <- data.frame(x = 1, y = sample(1:10, 50, replace = TRUE), fac = fac))
d

p <- ggplot(d, aes(x=fac, y=y)) + geom_boxplot(fill = "#E69F00")
print(p)
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够通过每个因子(即A,B,C)的平均值,而不是数据框中的顺序,对箱形图进行重新排序。我一直在寻找答案,并遇到了几个命令,但没有一个起作用。我在想可能有一种使用order或reorder和dplyr / summary的方法,但是我尝试的所有方法都无法正常工作。

我还不能上传图片,但是假设该图的平均值为A,A,B,C为5.5,A为6,B为5.5。我希望该顺序为B,C,A。 30个因素,因此我希望有一个简单的方法来完成此任务,而无需手动订购。

我真的很感谢所有的帮助!

csg*_*pie 5

最简单的方法是使用reorder

d$fac = reorder(d$fac, d$y, mean)
Run Code Online (Sandbox Code Playgroud)

在此,我们根据的值计算y条件的均值fac。ggplot2现在将根据以下顺序对图进行排序levels(d$fac)

你也可以把reorderggplot通话

# Thanks to renato vitolo
ggplot(d, aes(x=reorder(fac, y, mean), y=y))
Run Code Online (Sandbox Code Playgroud)