web-dev-qa-db-ja.com

R-因子レベルに応じたヒストグラムの分割

これは私のデータです:

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

diffのヒストリグラムをプロットする場合、次のようにします。

hist(data$diff)

しかし、typeに従ってヒストグラムを分割するために何をしたいのか。私はこれを行うことができます:

par(mfrow=c(1,2))
hist(data$diff[data$type==0])
hist(data$diff[data$type==1])

しかし、これが私に与えているのは、2つの異なるヒストグラムが並んでいるということです。私がやりたいのは、片側に0diffと、反対側にdiffof 1の単一のヒストグラムを作成することです。切れ目や境界線のない連続したバーを持つこのようなもの。これはおそらく、各因子ごとに軸が2つに分割されることを意味します。 enter image description here

15
89_Simple

ggplot2パッケージを使用できます:

library(ggplot2)

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

enter image description here

それらを「かわす」ことで同じプロットに置くこともできます:

ggplot(data,aes(x=diff,group=type,fill=type))+
  geom_histogram(position="dodge",binwidth=0.25)+theme_bw()

enter image description here

それらをオーバーラップさせる場合、位置はposition="identity"である必要があります

ggplot(data,aes(x=diff,group=type,fill=type))+
  geom_histogram(position="identity",alpha=0.5,binwidth=0.25)+theme_bw()

enter image description here

最初のものと同じように見せたいが、境界線がない場合は、少しハックする必要があります。

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

enter image description here

25
Sam Dickson

そのプロットは格子パッケージを使用して作成されました

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


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

enter image description here

基本的なグラフィックスでそれを行う方法は次のとおりです

## 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)

enter image description here

11
rawr