在更高级别订购箱线图(R,ggplot2)
Order boxplot at higher level (R, ggplot2)
我正在使用以下代码:
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 中定义的 class?以及如何添加指示每个 class 的标签?期望的结果如下所示:
请注意,我需要将其应用于更大的数据集,因此我需要使用 sort_table data.frame 和 而不是 进行排序 "manual" 使用类似 c(1,3,8,2,6,4)
的方式进行排序。谢谢。
您可以先 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"))
。
我正在使用以下代码:
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 中定义的 class?以及如何添加指示每个 class 的标签?期望的结果如下所示:
请注意,我需要将其应用于更大的数据集,因此我需要使用 sort_table data.frame 和 而不是 进行排序 "manual" 使用类似 c(1,3,8,2,6,4)
的方式进行排序。谢谢。
您可以先 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"))
。