如何使用ggplot2创建刻面图,其中当且仅当构面中的观察数超过某个指定阈值时才绘制每个构面? This question探讨了如何使用方面中的观察数量来注释每个方面,但我希望能够指定一个阈值,其中观察到的观测值少于阈值的每个方面都不会被绘制。
以下是我想要指定阈值的情节类型的简单示例:
require(ggplot2)
p <- ggplot(data,aes(x=xaxis)) + geom_density()
p <- p + facet_grid(ab1 ~ ab2)
这会产生一个分面图,其中一些方面的观察结果太少而无意义,所以我想在那里找到一个空的网格/空格而不是绘制误导性数据。
答案 0 :(得分:4)
由于您希望在没有足够数据的情况下保留空白方面(至少是我的最后一句话的意思),您可以将数据值替换为NA
组太小了。
以下是一个示例,使用内置的mtcars
数据框。我们使用dplyr
的链接运算符(%>%
)按carb
列进行分组,并为所有小于{0}}的群组执行NA
替换8行数据:
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)