R ggplot2直方图:仅显示具有2个以上观测值的箱子

R ggplot2直方图:仅显示具有2个以上观测值的箱子,r,ggplot2,histogram,R,Ggplot2,Histogram,我想为变量的分布创建一个直方图。出于数据审查的原因,我只允许显示包含两个以上观察值的箱子。有没有办法在ggplot2中轻松完成此任务? 以下是一个例子: library(ggplot2) set.seed(1234) df <- data.frame( weight=round(c(rnorm(200, mean=55, sd=5), rnorm(200, mean=65, sd=5))) ) p <- ggplot(df, aes(x=weight)) + geom_h

我想为变量的分布创建一个直方图。出于数据审查的原因,我只允许显示包含两个以上观察值的箱子。有没有办法在ggplot2中轻松完成此任务? 以下是一个例子:

library(ggplot2)
set.seed(1234)

df <- data.frame(
  weight=round(c(rnorm(200, mean=55, sd=5), rnorm(200, mean=65, sd=5)))
)

p <- ggplot(df, aes(x=weight)) +
  geom_histogram() +
  stat_bin(aes(y=..count.. + 2, label=..count..), geom="text")
p

库(ggplot2)
种子集(1234)

df不是最方便的,但是您可以从外部计算箱子高度(可能这有帮助:),然后过滤装箱数据,然后绘制直方图,提供x和y美学和stat=“identity”


或者,除了物理移除观察很少的箱子(即,如果您想将装箱数据重新用于其他内容),您可以使用第三个布尔变量来描述每行(即箱子)是否符合您的标准,并将其用作填充颜色。然后设置比例填充手动(值=c(“透明”、“黑色”),这将使标准列中带有FALSE的箱子透明。

不是最方便的,但您可以从外部计算箱子高度(可能这有帮助:),然后过滤装箱数据,然后绘制直方图,提供x和y美学以及stat=“identity”


或者,除了物理移除观察很少的箱子(即,如果您想将装箱数据重新用于其他内容),您可以使用第三个布尔变量来描述每行(即箱子)是否符合您的标准,并将其用作填充颜色。然后设置scale\u fill\u manual(value=c(“透明”、“黑色”)),这将使标准列中带有FALSE的箱子透明。

这是可以做到的,我的建议是你必须事先确定箱子,否则过滤没有意义

我们从你的例子开始:

library(ggplot2)
library(gridExtra)
set.seed(1234)

df <- data.frame(
  weight=round(c(rnorm(200, mean=55, sd=5), rnorm(200, mean=65, sd=5)))
)

这是可以做到的,我的建议是你必须事先确定垃圾箱,否则过滤就没有意义了

我们从你的例子开始:

library(ggplot2)
library(gridExtra)
set.seed(1234)

df <- data.frame(
  weight=round(c(rnorm(200, mean=55, sd=5), rnorm(200, mean=65, sd=5)))
)

使用ggplot2实际上很容易做到这一点。我不认为情节本身有任何意义,但这个想法可能在这之外有用处。您可以在
aes()
中使用
ifelse
条件,而不会出现任何问题

库(“ggplot2”)
##下优等种子;)
种子(42)
df`stat_bin()`使用`bin=30`。使用“binwidth”选择更好的值。


p 2,…计数…,0)))+
geom_直方图()+
统计数据(aes(标签=…计数…),geom=“文本”)
P
#>`stat_bin()`使用`bins=30`。使用“binwidth”选择更好的值。
#>`stat_bin()`使用`bins=30`。使用“binwidth”选择更好的值。


由(v0.3.0)创建于2019-11-13,使用ggplot2实际上非常简单。我不认为情节本身有任何意义,但这个想法可能在这之外有用处。您可以在
aes()
中使用
ifelse
条件,而不会出现任何问题

库(“ggplot2”)
##下优等种子;)
种子(42)
df`stat_bin()`使用`bin=30`。使用“binwidth”选择更好的值。


p 2,…计数…,0)))+
geom_直方图()+
统计数据(aes(标签=…计数…),geom=“文本”)
P
#>`stat_bin()`使用`bins=30`。使用“binwidth”选择更好的值。
#>`stat_bin()`使用`bins=30`。使用“binwidth”选择更好的值。


(v0.3.0)于2019年11月13日创建。

顺便说一句,我对ggplot2直方图有两个不满。首先是默认的存储箱数量-我通常通过
nclass.FD()
使用,因为它在大多数情况下提供了一个非常好的默认值。第二个是默认边界介于可疑和完全误导之间(详情请参见)。首先是默认的存储箱数量-我通常通过
nclass.FD()
使用,因为它在大多数情况下提供了一个非常好的默认值。第二,默认边界介于可疑和完全误导之间(详见)。
h <- hist(df$weight,breaks=BREAKS,plot=FALSE)
dat <- data.frame(weight=h$mids,n=h$counts)

p2 <- ggplot(dat,aes(x=weight,y=n)) + 
geom_col() + geom_text(aes(label=n),vjust=-0.5,size=3)
CUTOFF=2
ggplot(subset(dat,n>CUTOFF),aes(x=weight,y=n)) + 
geom_col() + geom_text(aes(label=n),vjust=-0.5,size=3)