在使用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错误吗?还是我错过了什么?

最佳答案

通过反复试验,它归结为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实现的,因此需要花费一些精力才能实现。

关于r - 在par(fig)之后,不写空白的文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42395952/

10-12 20:07