使用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 bug吗?或者我错过了什么?
答案 0 :(得分: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中实现的,因此需要努力解决这个问题。