R-根据因子水平分割直方图

R-根据因子水平分割直方图,r,histogram,levels,R,Histogram,Levels,这是我的数据: type<-rep(c(0,1),100) diff<-rnorm(100) data<-data.frame(type,diff) 但是我想做的是根据类型划分直方图。我可以这样做: par(mfrow=c(1,2)) hist(data$diff[data$type==0]) hist(data$diff[data$type==1]) 但这给了我两个不同的直方图并排。我想做的是生成一个直方图,其中一侧的diff为0,另一侧的diff为1。类似于这样的东西

这是我的数据:

type<-rep(c(0,1),100) 
diff<-rnorm(100)
data<-data.frame(type,diff)
但是我想做的是根据
类型划分直方图。我可以这样做:

par(mfrow=c(1,2))
hist(data$diff[data$type==0])
hist(data$diff[data$type==1])
但这给了我两个不同的直方图并排。我想做的是生成一个直方图,其中一侧的
diff
0
,另一侧的
diff
1
。类似于这样的东西,棒是连续的,中间没有中断或边界。这大概意味着,对于每个因素,轴将被分成两部分。

您可以使用
ggplot2
软件包:

library(ggplot2)

ggplot(data,aes(x=diff))+geom_histogram()+facet_grid(~type)+theme_bw()

您也可以通过“避开”它们将它们放在同一个图上:

如果希望它们重叠,则位置必须为
position=“identity”

如果你想让它们看起来像第一个,但没有边界,你必须稍微修改一下:

data$diff[data$type==1] <- data$diff[data$type==1] + 6

ggplot(data,aes(x=diff,group=type,fill=type))+
  geom_histogram(position="identity",alpha=0.5,binwidth=0.25)+theme_bw()+
  scale_x_continuous(breaks=c(-2:2,4:8),labels=c(-2:2,-2:2))

data$diff[data$type==1]该图是使用lattice软件包绘制的

set.seed(1)
type<-rep(c(0,1),100) 
diff<-rnorm(100)
data<-data.frame(type,diff)


library('lattice')
histogram(~ diff | type, data = data)

谢谢你,山姆。我可以画出这幅图。但我想把这两者合并。基本上都是相同的,没有边界。
ggplot(data,aes(x=diff,group=type,fill=type))+
  geom_histogram(position="identity",alpha=0.5,binwidth=0.25)+theme_bw()
data$diff[data$type==1] <- data$diff[data$type==1] + 6

ggplot(data,aes(x=diff,group=type,fill=type))+
  geom_histogram(position="identity",alpha=0.5,binwidth=0.25)+theme_bw()+
  scale_x_continuous(breaks=c(-2:2,4:8),labels=c(-2:2,-2:2))
set.seed(1)
type<-rep(c(0,1),100) 
diff<-rnorm(100)
data<-data.frame(type,diff)


library('lattice')
histogram(~ diff | type, data = data)
## first plot - left half of x-axis, right margin set to 0 lines
par(fig = c(0, .5, 0, 1), mar = c(5,4,3,0))
hist(data$diff[data$type==0], ann = FALSE, las = 1)

## second plot - right half of x-axis, left margin set to 0 lines
par(fig = c(.5, 1, 0, 1), mar = c(5,0,3,2), new = TRUE)
hist(data$diff[data$type==1], ann = FALSE, axes = FALSE)
axis(1)
axis(2, lwd.ticks = 0, labels = FALSE)

title(main = 'Histogram', xlab = 'x label', outer = TRUE, line = -2)