将条形图与R中的箱形图对齐

时间:2015-06-11 23:39:30

标签: r plot alignment bar-chart boxplot

我想使用R中的barplot函数绘制计数分布,并使用boxplot作为底图,以包含有关中位数,四分位数和异常值的信息。对于直方图和箱线图,我们发现了一个不太优雅的解决方案:http://rgraphgallery.blogspot.com/2013/04/rg-plotting-boxplot-and-histogram.html

网上有很多地方可以找到这样的论点:数字数据应该用直方图绘制,而分类数据应该用条形图绘制。我的数据是数字的,实际上是比例尺(因为它们是计数),但因为它们是离散,我想要有间隙的列,而不是要触摸的列,这似乎是唯一的选择对于直方图()。

我目前有以下内容,但是条形图和箱形图并不完美对齐:

set.seed(476372)
counts1 <- rpois(10000,3)
nf <- layout(mat = matrix(c(1,2),2,1, byrow=TRUE),  height = c(3,1))
par(mar=c(3.1, 3.1, 1.1, 2.1))
barplot(prop.table(table(counts1)))
boxplot(counts1, horizontal=TRUE,  outline=TRUE,ylim=c(0,12), frame=F, width = 10)

我的问题是:如何使它们对齐?

2 个答案:

答案 0 :(得分:5)

另一种类似但更多工作的选择。这样可以保留条形间隙的选项:

dh $@ --foobar

enter image description here

答案 1 :(得分:0)

也许使用&#34;假的&#34;最后的直方图

ht=hist(counts1,breaks=12,plot = F)
ht$counts=as.numeric(table(counts1))
ht$density=as.numeric(prop.table(table(counts1)))
ht$breaks=as.numeric(names(table(counts1)))
ht$mids=sapply(1:(length(ht$breaks)-1),function(z)mean(ht$breaks[z:(z+1)]))

plot(ht,freq=F,col=3,main="")
boxplot(counts1, horizontal=TRUE,outline=TRUE,ylim=range(ht$breaks), frame=F, col="green1", width = 10)

enter image description here