我想使用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)
我的问题是:如何使它们对齐?
答案 0 :(得分:5)
另一种类似但更多工作的选择。这样可以保留条形间隙的选项:
dh $@ --foobar
答案 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)