【发布时间】:2016-09-09 12:10:19
【问题描述】:
有没有人知道如何在 R 中使用不支持标准多绘图工具(如 mfrow、layout 或 split.screen)的绘图函数绘制多个绘图?基本上,我正在尝试将效果图、普通图和 ctree 图绘制成一个图形,布局如下:
layout( matrix(c(1,2,3), ncol = 3) )
layout.show(3)
dev.off()
任何帮助都会很好。我对标准功能的尝试如下。
set.seed(pi)
DF <- data.frame( x = c(rnorm(50, 3), rnorm(50, 10)),
y = c(rnorm(50, 3), rnorm(50, 10)) )
ct <- party::ctree( y ~ x, data = DF )
mod <- lm( y ~ x, data = DF )
eff <- effects::effect( "x", mod )
## Attempt 1 (mfrow):
par( mfrow = c(1,3) )
plot( eff )
plot( DF$x, DF$y )
plot( ct )
par( mfrow = c(1,1) )
dev.off()
## Attempt 2 (layout):
layout( matrix(c(1,2,3), ncol = 3) )
plot( eff )
plot( DF$x, DF$y )
plot( ct )
dev.off()
## Attempt 3 (split.screen):
split.screen( rbind( c( 0, 1/3, 0, 1),
c(1/3, 2/3, 0, 1),
c(2/3, 1, 0, 1) ) )
screen(1)
plot( ct )
screen(2)
plot(DF$x, DF$y )
screen(3)
plot( eff )
close.screen(all.screens = TRUE)
dev.off()
【问题讨论】:
-
函数似乎使用基于网格的图形。看
party:::plotTree的代码。因此,您必须使用viewports()将它们组合起来。我对它们不熟悉,但您可以尝试阅读pushViewport、popViewport和类似内容。 -
完美!通过网格和一些努力,我做到了。我发布答案。非常感谢。
-
发布一个明确定义的问题,进行研究并分享一个很好的答案。我们需要更多像你一样的人在这个网站上,干得好。