在 geom_boxplot 中保留 n 个最大的组
Keep n largest groups in geom_boxplot
在创建箱线图时,是否有一种聪明的方法只保留 n 个最大的组(计数)?
library(tidyverse)
head(mpg)
# A tibble: 6 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compa~
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compa~
3 audi a4 2 2008 4 manual(m6) f 20 31 p compa~
4 audi a4 2 2008 4 auto(av) f 21 30 p compa~
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compa~
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compa~
mpg %>%
count(manufacturer, sort=TRUE)
# A tibble: 15 x 2
manufacturer n
<chr> <int>
1 dodge 37
2 toyota 34
3 volkswagen 27
4 ford 25
5 chevrolet 19
6 audi 18
7 hyundai 14
8 subaru 14
9 nissan 13
10 honda 9
11 jeep 8
12 pontiac 5
13 land rover 4
14 mercury 4
15 lincoln 3
这是一个情节。我想例如仅保留上述table中的前5家厂商。
mpg %>% ggplot()+
geom_boxplot(aes(displ, manufacturer))
您需要做的是在 ggplot
调用之前提取 N 个想要的制造商并将它们传递给 scale_y_discrete(limits = ...)
(limits
将对想要的变量进行子集化并仅绘制它们)。
library(tidyverse)
nWanted <- 5
foo <- head(count(mpg, manufacturer, sort = TRUE), nWanted)$manufacturer
# [1] "dodge" "toyota" "volkswagen" "ford" "chevrolet"
ggplot(mpg) +
geom_boxplot(aes(displ, manufacturer)) +
scale_y_discrete(limits = foo)
更正确的解决方案是(即,将分类变量传递给 x 轴,然后翻转坐标):
ggplot(mpg) +
geom_boxplot(aes(manufacturer, displ)) +
coord_flip() +
scale_x_discrete(limits = foo)
在创建箱线图时,是否有一种聪明的方法只保留 n 个最大的组(计数)?
library(tidyverse)
head(mpg)
# A tibble: 6 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compa~
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compa~
3 audi a4 2 2008 4 manual(m6) f 20 31 p compa~
4 audi a4 2 2008 4 auto(av) f 21 30 p compa~
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compa~
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compa~
mpg %>%
count(manufacturer, sort=TRUE)
# A tibble: 15 x 2
manufacturer n
<chr> <int>
1 dodge 37
2 toyota 34
3 volkswagen 27
4 ford 25
5 chevrolet 19
6 audi 18
7 hyundai 14
8 subaru 14
9 nissan 13
10 honda 9
11 jeep 8
12 pontiac 5
13 land rover 4
14 mercury 4
15 lincoln 3
这是一个情节。我想例如仅保留上述table中的前5家厂商。
mpg %>% ggplot()+
geom_boxplot(aes(displ, manufacturer))
您需要做的是在 ggplot
调用之前提取 N 个想要的制造商并将它们传递给 scale_y_discrete(limits = ...)
(limits
将对想要的变量进行子集化并仅绘制它们)。
library(tidyverse)
nWanted <- 5
foo <- head(count(mpg, manufacturer, sort = TRUE), nWanted)$manufacturer
# [1] "dodge" "toyota" "volkswagen" "ford" "chevrolet"
ggplot(mpg) +
geom_boxplot(aes(displ, manufacturer)) +
scale_y_discrete(limits = foo)
更正确的解决方案是(即,将分类变量传递给 x 轴,然后翻转坐标):
ggplot(mpg) +
geom_boxplot(aes(manufacturer, displ)) +
coord_flip() +
scale_x_discrete(limits = foo)