2012-08-01 111 views
-1

layout函数的第4个示例中,可以通过example(layout), 生成该函数,我想在来自正常散布的样本的条形图上覆盖线条图。
我试过lines()plot( , add=TRUE),但没有运气。
我该怎么做?或者我必须采取不同的路线使用layout布局添加行R

+0

你可以更具体一些,并提供一个完整的可重复的例子吗?你“尝试”“线路”在哪里?怎么样? – joran 2012-08-01 18:11:16

回答

0

这里有一个办法:

library(TeachingDemos) 
x <- pmin(3, pmax(-3, stats::rnorm(50))) 
y <- pmin(3, pmax(-3, stats::rnorm(50))) 
xhist <- hist(x, breaks=seq(-3,3,0.5), plot=FALSE) 
yhist <- hist(y, breaks=seq(-3,3,0.5), plot=FALSE) 
top <- max(c(xhist$density, yhist$density)) 
xrange <- c(-3,3) 
yrange <- c(-3,3) 
nf <- layout(matrix(c(2,0,1,3),2,2,byrow=TRUE), c(3,1), c(1,3), TRUE) 
layout.show(nf) 

par(mar=c(3,3,1,1)) 
plot(x, y, xlim=xrange, ylim=yrange, xlab="", ylab="") 
par(mar=c(0,3,1,1)) 
bx.out <- barplot(xhist$density, axes=FALSE, ylim=c(0, top), space=0) 
updateusr(bx.out[1:2], 0:1, xhist$mids[1:2], 0:1) 
xdens <- density(x) 
lines(xdens$x, xdens$y, col='blue') 
par(mar=c(3,0,1,1)) 
by.out <- barplot(yhist$density, axes=FALSE, xlim=c(0, top), space=0, horiz=TRUE) 
updateusr(0:1, by.out[1:2], 0:1, yhist$mids[1:2]) 
ydens <- density(y) 
lines(ydens$y, ydens$x, col='blue') 

注意从countsdensity的变化,使横杠上的“高度”将匹配与密度和使用updateusr从TeachingDemos包相匹配的坐标系统。代替updateusr您也可以指定widthxlimbarplot函数。

+0

哦,它的工作原理。非常感谢!这是我在stackoverflow上的第一个问题,我对这个论坛上人们有所表达的印象深刻。 – Ikuyasu 2012-08-01 22:14:59