有人问过类似here之类的问题,但是我发现使用格网并不能解决这个问题。
我想制作类似于car :: scatterplot()的图形,在其中可以沿xyplot()的x和y轴绘制边际分布(例如boxplot)
require(car)
data(Prestige, package="carData")
car::scatterplot(prestige~income, data=Prestige, boxplots="xy")
我有晶格元素:
require(lattice)
require(latticeExtra)
require(grid)
plot1 <- xyplot(x=prestige~income, data=Prestige,
panel=function(x, y, ...)
{
panel.grid(h=-1, v=-1)
panel.xyplot(x, y, ...)
panel.lmline(x, y, ...)
})
plot2 <- bwplot(Prestige$income, xlab="", ylab="", scales=list(col=0),
par.settings = list(axis.line=list(col="transparent")))
plot3 <- bwplot(Prestige$prestige, xlab="", ylab="", scales=list(col=0),
par.settings = list(axis.line=list(col="transparent")))
vp <- viewport(width=0.9, height=0.9)
pushViewport(vp)
vp1 <- viewport(x=0.25, y=0.25, width=0.75, height=0.75, just=c("left", "bottom"))
pushViewport(vp1)
print(plot1, newpage=FALSE)
upViewport()
vp2 <- viewport(x=0.25, y=0, width=0.75, height=0.30, just=c("left", "bottom"))
pushViewport(vp2)
print(plot2, newpage=FALSE)
upViewport()
vp3 <- viewport(x=0, y=0.25, width=0.75, height=0.30, just=c("left", "top"), angle=90)
pushViewport(vp3)
print(plot3, newpage=FALSE)
元素在适当的位置,但是如何设置边际分布的位置,以使数据点与xypot()中的数据点匹配? -viewport()中的x和y位置无需反复试验。
有什么主意吗? - 非常感谢你! 罗兰