按降序排列 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] 内的基础 reorder
对 C
的因子水平重新排序=]:
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
我正在尝试使用 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] 内的基础 reorder
对 C
的因子水平重新排序=]:
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