Jon*_*ull 3 r ggplot2 facet-wrap dplyr
我试图facet_wrap用默认情况下按字母顺序对图进行排序来进行绘图。但是,期望的结果是按数字降序列对其进行排序。
以下是我得到的:
\n\nlibrary(tidyverse)\n\nM <- data.frame(\n A = LETTERS[1:10],\n B = round(rnorm(10,200,50)), \n C = letters[15:24]\n )\n\nggplot(M, aes(A, B)) + \n geom_bar(stat = "identity") + \n facet_wrap(~C)\nRun Code Online (Sandbox Code Playgroud)\n\n相反,我希望得到按 B 列降序排列的图
\n\narrange(M, desc(B)) %>%\n ggplot(aes(A, B)) + \n geom_bar(stat = "identity") + \n facet_wrap(~C) ## need it ordered by B\nRun Code Online (Sandbox Code Playgroud)\n\n我知道一种方法是改变级别,但我不知道在序列中的哪个位置以及如何进行。
\nC您可以根据 的值B(按降序)使用forcats::fct_reorder或reorder内的值重新排序因子水平facet_wrap:
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
Run Code Online (Sandbox Code Playgroud)
