删除观测值太少的面
Drop facets with too few observations
如何使用 ggplot2 创建分面图,当且仅当分面中的观察值数量超过某个指定阈值时才绘制每个分面? This question 探讨了如何使用小平面中的观察数量来注释每个小平面,但我希望能够指定一个阈值,其中根本不绘制观察数量少于阈值的每个小平面。
这是我想指定阈值的绘图类型的简单示例:
require(ggplot2)
p <- ggplot(data,aes(x=xaxis)) + geom_density()
p <- p + facet_grid(ab1 ~ ab2)
这会生成一个多面图,其中某些方面的观察结果太少而没有意义,所以我想要一个空的 grid/space 而不是绘制误导性数据。
由于您想在没有足够数据时保留空分面(至少这是我理解您最后一句话的意思),对于太小的组,您可以将数据值替换为 NA
。
这是一个示例,使用内置的 mtcars
数据框。我们使用 dplyr
的链接运算符 (%>%
) 按 carb
列进行分组,并对少于 8 行的所有组进行动态 NA
替换数据:
library(ggplot2)
library(dplyr)
ggplot(mtcars %>% group_by(carb) %>%
mutate(mpg = if(n() >= 8) mpg else NA_real_),
aes(mpg)) +
geom_density() +
facet_grid(. ~ carb)
如果您只想绘制至少有 8 个观察值的那些面,您可以这样做:
ggplot(mtcars %>% group_by(carb) %>%
filter(n() >= 8),
aes(mpg)) +
geom_density() +
facet_grid(. ~ carb)
如何使用 ggplot2 创建分面图,当且仅当分面中的观察值数量超过某个指定阈值时才绘制每个分面? This question 探讨了如何使用小平面中的观察数量来注释每个小平面,但我希望能够指定一个阈值,其中根本不绘制观察数量少于阈值的每个小平面。
这是我想指定阈值的绘图类型的简单示例:
require(ggplot2)
p <- ggplot(data,aes(x=xaxis)) + geom_density()
p <- p + facet_grid(ab1 ~ ab2)
这会生成一个多面图,其中某些方面的观察结果太少而没有意义,所以我想要一个空的 grid/space 而不是绘制误导性数据。
由于您想在没有足够数据时保留空分面(至少这是我理解您最后一句话的意思),对于太小的组,您可以将数据值替换为 NA
。
这是一个示例,使用内置的 mtcars
数据框。我们使用 dplyr
的链接运算符 (%>%
) 按 carb
列进行分组,并对少于 8 行的所有组进行动态 NA
替换数据:
library(ggplot2)
library(dplyr)
ggplot(mtcars %>% group_by(carb) %>%
mutate(mpg = if(n() >= 8) mpg else NA_real_),
aes(mpg)) +
geom_density() +
facet_grid(. ~ carb)
如果您只想绘制至少有 8 个观察值的那些面,您可以这样做:
ggplot(mtcars %>% group_by(carb) %>%
filter(n() >= 8),
aes(mpg)) +
geom_density() +
facet_grid(. ~ carb)