在更高级别订购盒装图(R,ggplot2)

时间:2019-07-04 10:18:35

标签: r sorting ggplot2 boxplot

我正在使用以下代码:

 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))

这将导致以下情节: enter image description here

如何按照sort_table data.frame中的定义,在更高级别(即按类)对箱线图进行排序?以及如何添加指示每个班级的标签?所需的结果如下所示:

enter image description here

请注意,我需要将其应用于更大的数据集,因此需要使用sort_table data.frame和进行排序,方法是使用c(1,3,8,2,6,4)之类的“手动”排序。谢谢。

1 个答案:

答案 0 :(得分:2)

您可以先merge mtcarssort_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")

enter image description here

如果要删除刻面周围的空白,请添加+ theme(panel.spacing.x = unit(0, "pt"))