2017-02-22 11 views
5

グラフィックパラメータをpar(fig)に設定して元のパラメータでリセットした後、プロットの余白のテキストは書き込まれません。 内の別の低レベルコマンドの後でのみ、プロット領域が実行され、再び動作します。ここでは例です:の後に余白のテキストが書き込まれない

dev.off() 
plot(1:10) 
op <- par(no.readonly = TRUE) 
mtext("hello", adj=1, col=2)   # written as expected 
par(fig=c(0.1,0.6,0.5,0.8), new=TRUE) 
par(op) 
mtext("hello ", adj=1, col=3)   # not written 
mtext("hello ", adj=1, col=3, line=-1) # works inside plot region 
mtext("hello ", adj=1, col=3)   # still not written 
text(50,20,"") # or abline    # do something inside plot region 
mtext("hello   ", adj=1, col=3) # now it works! 

これは私がafter par(fig), mtext is slightly offの下に掲示別の質問に関連することができます。

mtextのほかに、axisも機能しません。 text/abline/pointsのほかに、title(main="dummy")もこの問題を解決します。

これはRバグですか?または私は何かを逃していますか?

+0

私は 'par(op)'が新しいプロットを開始すると思われます。 'par(op)'を 'par(fig = op $ fig、new = TRUE)'に置き換え、期待どおりに動作します。 –

+0

今は面白いです! 'new'、btwなしで' par(fig = op $ fig) 'で十分です。なぜそれがプロッティング領域では動作しますが、マージンでは動作しないのです。 –

答えて

5

試行錯誤により、par(mfg=c(1, 1, 1, 1))になります。 (ただし、図中)の余白に印刷テキストを無効にする必要があり、次のプロットする数値を設定する理由

plot(1:10) 
op <- par(no.readonly = TRUE) 
mtext("hello", adj=1, col=2)   # written as expected 
par(op[names(op) == "mfg"]) 
mtext("bye ", adj=1, col=3)   # not written 
mtext("hello ", adj=1, col=3, line=-1) # works inside plot region 

plot(1:10) 
op <- par(no.readonly = TRUE) 
mtext("hello", adj=1, col=2)   # written as expected 
par(op[names(op) != "mfg"]) 
mtext("bye ", adj=1, col=3)   # written as expected 
mtext("hello ", adj=1, col=3, line=-1) # works inside plot region 

は、それは私にははっきりしていない、とmtextはCで実装されているので、それが動作するようにいくつかの努力を取りますそれを出す。

関連する問題