意味的にはこんな感じである。
plot
で作図すると高水準関数といって、とりあえず作図されるが、その後に低水準関数と呼ばれる、例えばpoints
やline
といった関数で後付でお絵描きができる。
自分がよくやるのはplot
したあとに、ある領域はこうである、みたいな色付けをpolygon
関数でやるのだが、何も考えないでplot
のあとにpolygon
を行うとこんな感じになる。
d <- 0.5 plot(1, xlab="", ylab="") box(lwd=10) pa <- par()$usr polygon(c(pa[1]+d, pa[2]-d, pa[2]-d, pa[1]+d), rep(pa[3:4], each=2), border=NA, col=grey(0.8))
box
関数で枠の太さを水増ししているが、要はpolygon
で作図した線がplot
で定義されている枠線のちょうど真ん中を通るように設計されているので、polygon
がレイヤーでいうところの最上位に来ていてこんな感じのなんか気持ち悪い感じになる。
これを解決してpolygon
が下に来てplot
の枠線が上に来るようにするには、それはそうするしかない。が、普通にbox
で後付けするとplot
で描かれる枠線とかぶって更に気持ち悪くなる。
というわけでplot
するときに、不要なものやあとで付け足したいものは引数で描かないように設定する。
plot(1, xlab="", ylab="", frame=FALSE, xaxt="n", yaxt="n") axis(1, lwd=0, lwd.ticks=1) axis(2, lwd=0, lwd.ticks=1) polygon(c(pa[1]+d, pa[2]-d, pa[2]-d, pa[1]+d), rep(pa[3:4], each=2), border=NA, col=grey(0.8)) box(lwd=10)