我正在使用以下代码:
library(ggplot2)
mtcars$carb <- as.factor(mtcars$carb)
mtcars$am <- as.factor(mtcars$am)
sort_table <- data.frame("carb" = c(1,2,3,4,6,8), "class" = c("class A", "class B", "class A", "class C", "class B", "class A"))
ggplot(mtcars) +
geom_boxplot(aes(x = carb, y = mpg, fill = am),
position = position_dodge(0.9))
如何按照sort_table data.frame中的定义,在更高级别(即按类)对箱线图进行排序?以及如何添加指示每个班级的标签?所需的结果如下所示:
请注意,我需要将其应用于更大的数据集,因此需要使用sort_table data.frame和不进行排序,方法是使用c(1,3,8,2,6,4)
之类的“手动”排序。谢谢。
答案 0 :(得分:2)
您可以先merge
mtcars
和sort_table
然后使用facet_grid
ggplot(merge(mtcars, sort_table, by = "carb")) +
geom_boxplot(aes(x = carb, y = mpg, fill = am),
position = position_dodge(0.9)) +
facet_grid(cols = vars(class), scales = "free_x", switch = "x", space = "free")
如果要删除刻面周围的空白,请添加+ theme(panel.spacing.x = unit(0, "pt"))
。