如何去除直方图中的低频区间

How to remove low frequency bins in histogram

假设我有一个数据框,其中包含我想在直方图中可视化的数字数组。我想要实现的是只显示包含超过 50 个观察值的箱子。

步骤 1

set.seed(10)
x <- data.frame(x = rnorm(1000, 50, 2))
p <- 
  x %>% 
  ggplot(., aes(x)) +
  geom_histogram()

p

步骤 2

pg <- ggplot_build(p)

pg$data[[1]]

作为打印 pg$data[[1]] 时的检查,我希望只有 count >= 50.

的行

谢谢

library(ggplot2)

ggplot(x, aes(x=x, y = ifelse(..count.. > 50, ..count.., 0))) +
  geom_histogram(bins=30) 

使用此代码,您可以查看已删除垃圾箱的计数:

library(ggplot2)

ggplot(x, aes(x=x, y = ifelse(..count.. > 50, ..count.., 0))) +
  geom_histogram(bins=30, fill="green", color="grey") +
  stat_bin(aes(label=..count..), geom="text", vjust = -0.7)

你可以这样做,很可能你真的不喜欢 x-axis 上的分解名称,但你可以做的是拆分两个值并取平均值来绘制那个x-axis.

x %>%
  mutate(bin = cut(x, breaks = 30)) %>%
  group_by(bin) %>%
  mutate(count = n()) %>%
  filter(count > 50) %>% 
  ggplot(., aes(bin)) +
  geom_histogram(stat = "count")