我想根据数据框中具有10个以上唯一值的变量数量来打印输出.这可以是任意数量的变量.我正在寻找一种方法来实现这一点,以设置绘图窗口是完美的变量数量.
它应该是这样的:
这有一个合乎逻辑的公式;
如何使这成为一个成功的par(mfrow=(c(x,y)))
?
另外,如何确保达到par限制时,click
对于下一个窗口,当我超过16时我无法单击,而只是覆盖之前的图形.
Rei*_*son 11
它n2mfrow()
是为此目的而设计的,虽然它往往比列更快地改变行,因此与你想要的相反.例如:
> n2mfrow(2)
[1] 2 1
Run Code Online (Sandbox Code Playgroud)
表示2行乘1列.当然,rev()
可以轻松获得所需的输出:
> rev(n2mfrow(3))
[1] 1 3
Run Code Online (Sandbox Code Playgroud)
这里是n2mfrow()
2到16个总图的输出,列的变化更快:
t(sapply(2:16, function(x) rev(n2mfrow(x))))
> t(sapply(2:16, function(x) rev(n2mfrow(x))))
[,1] [,2]
[1,] 1 2
[2,] 1 3
[3,] 2 2
[4,] 2 3
[5,] 2 3
[6,] 3 3
[7,] 3 3
[8,] 3 3
[9,] 3 4
[10,] 3 4
[11,] 3 4
[12,] 4 4
[13,] 4 4
[14,] 4 4
[15,] 4 4
Run Code Online (Sandbox Code Playgroud)
对于"16后点击"位.如果你在一个for(i in numplots)
循环中进行绘图,当i
> 16调用时devAskNewPage(ask = TRUE)
,将提示用户激活下一个绘图.
例如:
np <- 18 ## number of plots
rc <- ifelse(np > 16, 16, np)
op <- par(mfrow = rev(n2mfrow(rc)))
for(i in seq_len(np)) {
if(i == 2) {
devAskNewPage(ask = TRUE)
}
plot(1:10)
}
par(op)
devAskNewPage(ask = FALSE)
Run Code Online (Sandbox Code Playgroud)
类似的事情可以使用locator(1)
强制点击移动16柱图,但它需要更多的工作:
np <- 18 ## number of plots
rc <- ifelse(np > 16, 16, np)
op <- par(mfrow = rev(n2mfrow(rc)))
for(i in seq_len(np)) {
if((i %% 16) + 1 == 2 && i > 1) {
message("Page filled. Click on device to continue...")
locator(1)
}
plot(1:10)
}
par(op)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1097 次 |
最近记录: |