删除观察太少的方面

时间:2015-12-07 20:21:32

标签: r ggplot2 facet

如何使用ggplot2创建刻面图,其中当且仅当构面中的观察数超过某个指定阈值时才绘制每个构面? This question探讨了如何使用方面中的观察数量来注释每个方面,但我希望能够指定一个阈值,其中观察到的观测值少于阈值的每个方面都不会被绘制。

以下是我想要指定阈值的情节类型的简单示例:

require(ggplot2)
p <- ggplot(data,aes(x=xaxis)) + geom_density()
p <- p + facet_grid(ab1 ~ ab2)

这会产生一个分面图,其中一些方面的观察结果太少而无意义,所以我想在那里找到一个空的网格/空格而不是绘制误导性数据。

1 个答案:

答案 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)

enter image description here

如果您只想绘制至少有8个观测值的方面,您可以这样做:

  ggplot(mtcars %>% group_by(carb) %>%
           filter(n() >= 8),
         aes(mpg)) + 
    geom_density() +
    facet_grid(. ~ carb)