2

2 台のデバイスに同時に印刷しようとしています。par$mfrowほとんどの場合、必要な出力を作成できますが、最初のデバイスの設定を変更する方法がわかりません。

pdf(file="test.all.pdf",width=7,height=10,pointsize=12,bg="white",paper="letter",pagecentre=T)
par(mfrow=c(3,2))

for(i in 1:12){
  temp <- rnorm(500,i,1)
  pdf(paste0("test_",i,".pdf"))
  dev.control(displaylist="enable")
  hist(temp)
  dev.copy(which=2)
  dev.off(which=3)
}

graphics.off()

プロットごとに個別の .pdf ファイルを取得しようとしています。次に、ページごとに 6 つのプロットを持つ結合された .pdf ファイルを取得しようとしています。代わりに、ページごとに 1 つのプロットを持つ結合された .pdf ファイルを取得しています。

この投稿に基づいてコードを作成しました。

4

1 に答える 1

0

@DWinのように、あなたが尋ねたように、これは不可能だと思います。dev.copy() は、プロットではなくデバイス領域をコピーします。そのため、別の par() パラメータのセットに従ってプロットを配置することはできないと思います。

また、各プロットを2回描画するために読み書きする方がはるかにクリーンで簡単に思えます。プロットを描画するためのコードが非常に複雑な場合は、事前に関数に変換してください。

mycomplicatedPlot <- function(x, ...){
    hist(x,...)
    abline(v=mean(x))
    abline(v=quantile(x, probs=c(0.025, 0.975)), lty=2, col="red")
}

pdf(file="test.all.pdf",width=7,height=10,pointsize=12,bg="white",paper="letter",pagecentre=T)
    par(mfrow=c(3,2))

    for(i in 1:12){
      temp <- rnorm(500,i,1)
      pdf(paste0("test_",i,".pdf"))
          mycomplicatedPlot(temp, main=i)
      dev.off()
    mycomplicatedPlot(temp, main=i)
    }
dev.off()
于 2013-04-13T06:49:55.953 に答える