jay*_*.sf 4 layout plot for-loop r par
我在情节中画情节。
(为了简单起见,我curve()
在这里使用,但这也指的是plot()
。)
curve(exp(x), 0, 1, col=4)
.op <- par(
fig=c(grconvertX(c(.05, .4), to='ndc'),
grconvertY(c(2, 2.75), to='ndc')),
mar=c(1, 1, 1, 1),
new=TRUE
)
curve(sin(x), 0, 2*pi)
par(.op)
Run Code Online (Sandbox Code Playgroud)
循环重复这个for
基本上效果很好。然而,当我尝试使用 2x2 时layout
,这些数字分布在四个不同的图上,而不是显示在一个图上。
layout(matrix(1:4, 2, 2))
for (i in 1:4) {
curve(exp(x), 0, 1, col=4)
.op <- par(
fig=c(grconvertX(c(.05, .3), to='ndc'),
grconvertY(c(2, 2.75), to='ndc')),
mar=c(1, 1, 1, 1),
new=TRUE
)
curve(sin(x), 0, 2*pi)
par(.op)
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,内部par
混乱了外部。我也尝试op <- par(mfrow=); ... par(op)
代替layout
,但结果相同。
我该如何解决这个问题?
尝试使用screen
替代。
split.screen(c(2,2))
for (i in 1:4) {
screen(i)
curve(exp(x), 0, 1, col=4)
title(paste("i=",i))
.op <- par(
fig=c(grconvertX(c(.05, .3), to='ndc'),
grconvertY(c(2, 2.75), to='ndc')),
mar=c(1, 1, 1, 1),
new=TRUE
)
curve(sin(x), 0, 2*pi)
par(.op)
}
Run Code Online (Sandbox Code Playgroud)