小编Sve*_*eaM的帖子

R:对几个单独的图重新排序因子水平

我试图从相同的data.frame创建几个单独的图,每个图的y轴上具有不同的因子水平顺序.每个图都应该按y顺序排列因子水平.

我知道这可以为每个情节手动完成,但我正在寻找一种更有效和更优雅的方式,因为我需要创建大量的情节.这不必包括使用facet_wrap,如果有另一种方式,可能有循环等?

library(ggplot2)
library(dplyr)
data("diamonds")
Run Code Online (Sandbox Code Playgroud)

采用数据集和聚合两个因子水平(清晰度和切割):

means <- diamonds %>%
group_by(clarity, cut) %>%
summarise(carat = mean(carat))
Run Code Online (Sandbox Code Playgroud)

在这里,我通过一个因素重新排序,但最终我想为每个图分别重新排序(通过降低清晰度的平均值).

means$clarity <- reorder(means$clarity, means$carat, FUN = mean)
Run Code Online (Sandbox Code Playgroud)

使用face_wrap创建单独的图.使用coord_flip可以更轻松地比较绘图.

ggplot(means, aes(x = clarity, y = carat)) +
  geom_col() +
  facet_wrap(~cut, ncol = 1) +
  coord_flip()
Run Code Online (Sandbox Code Playgroud)

您将看到,这会为每种类型的切割创建单独的图,但y轴上的因子水平的顺序对于每种情况都不正确.如何正确订购它们而无需为每种类型的切割手动执行此操作?

r ggplot2 dplyr

7
推荐指数
1
解决办法
730
查看次数

标签 统计

dplyr ×1

ggplot2 ×1

r ×1