デバイスの行数と列数を取得する
はこのn2mfrow()
目的のために設計されましたが、行は列よりも速く変化する傾向があるため、目的とは逆です。例えば:
> n2mfrow(2)
[1] 2 1
2 行 1 列を示します。もちろん、rev()
必要な出力を簡単に取得できます。
> rev(n2mfrow(3))
[1] 1 3
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
これをインタラクティブにする
「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)
同様のことは、16 番目以降のプロットでクリックを強制的に移動するために使用できますlocator(1)
が、もう少し作業が必要です。
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)