按降序排列 facet_wrap 个地块

Order facet_wrap plots by descending order

我正在尝试使用 facet_wrap 绘图,默认情况下按字母顺序排列绘图。但是,所需的结果是按数字降序排列。

下面是我得到的:

library(tidyverse)

M <- data.frame(
    A = LETTERS[1:10],
    B = round(rnorm(10,200,50)), 
    C = letters[15:24]
  )

ggplot(M, aes(A, B)) + 
    geom_bar(stat = "identity") + 
    facet_wrap(~C)

相反,我希望获得按 B 列降序排列的图

arrange(M, desc(B)) %>%
    ggplot(aes(A, B)) + 
    geom_bar(stat = "identity") + 
    facet_wrap(~C)   ## need it ordered by B

我知道一种方法是更改​​级别,但我不知道我可以在序列中的哪个位置以及如何进行更改。

您可以根据 B 的值(降序)使用 forcats::fct_reorder 或 [=15] 内的基础 reorderC 的因子水平重新排序=]:

library(tidyverse)

## data
M <- data.frame(
    A = LETTERS[1:10],
    B = round(rnorm(10,200,50)), 
    C = letters[15:24]
  )

## using fct_reorder
ggplot(M, aes(x = A, y = B)) + 
    geom_bar(stat = "identity") + 
    facet_wrap(facets = ~fct_reorder(C, B, .desc = TRUE))

## using base reorder
ggplot(M, aes(x = A, y = B)) + 
    geom_bar(stat = "identity") + 
    facet_wrap(facets = ~reorder(C, -B))   ## -B to get descending order