グラフィックス参考実例集:閉多角形を描く polygon
(グラフィックス参考実例集に戻る。Rのグラフィックスパラメータを参照する。)
polygon 関数は(閉)多角形を描、その中を塗りつぶす(または斜線でハッチングする)関数です。以下は最も簡単な呼びだし形式です。
polygon(x, y)
引数xとyには多角形の頂点のx、y座標のベクトルを指定します。 xとyの代わりに、x、y成分を持つリストでも、2列の行列でも構いません。polygonは頂点を順に結び、最後に起点と終点とを結んだ多角形を描きます。頂点を指定するベクトルの途中にNAがあると、そこで一旦多角形を区切って、新たに別の多角形を描き始めます。
引数densityによって、多角形の内部を塗りつぶすか、ハッチングするか、輪郭だけ描くかを制御できます。densityが負の値(デフォルト)なら塗りつぶします[*2]。densityが正の値ならその値を1インチ当たりの線の本数と解釈し、引数angleで指定された角度の線でハッチングします。 density=0と指定すれば、多角形の輪郭のみ描き、内部を塗りつぶしません。
引数colに色番号を指定することによって、輪郭線と塗りつぶしに用いる色を指定することができます。NAで区切っていくつかの多角形を描く場合、多角形の個数分の長さのベクトルを指定することにより、個々の多角形に対して別々の色を用いることができます。border=Fを指定すると、多角形の輪郭を描きません。
polygon1 <- function () { on.exit(par(old.par <- par(no.readonly = TRUE))) on.exit(dev.off()) png("polygon1.png") x <- c(1:9,8:1) y <- c(1,2*(5:3),2,-1,17,9,8,2:9) par(mfcol=c(3,1)) for(xpd in c(FALSE,TRUE,NA)) { plot(1:10, main=paste("xpd =", xpd)) ; box("figure", col = "pink", lwd=3) polygon(x,y, xpd=xpd, col = "orange", lty=2, lwd=2, border = "red") } }
polygon2 <- function () { on.exit(par(old.par <- par(no.readonly = TRUE))) on.exit(dev.off()) png("polygon2.png") n <- 100 xx <- c(0:n, n:0) yy <- c(c(0,cumsum(rnorm(n))), rev(c(0,cumsum(rnorm(n))))) plot (xx, yy, type="n", xlab="Time", ylab="Distance") polygon(xx, yy, col="gray", border = "red") title("Distance Between Brownian Motions") }
polygon3 <- function () { on.exit(par(old.par <- par(no.readonly = TRUE))) on.exit(dev.off()) png("polygon3.png") par(mfrow=c(2,1)) plot(c(1,9), 1:2, type="n") polygon(1:9, c(2,1,2,1,1,2,1,2,1), col=c("red", "blue"), border=c("green", "yellow"), lwd=3, lty=c("dashed", "solid")) plot(c(1,9), 1:2, type="n") polygon(1:9, c(2,1,2,1,NA,2,1,2,1), col=c("red", "blue"), border=c("green", "yellow"), lwd=3, lty=c("dashed", "solid")) }
polygon4 <- function () { on.exit(par(old.par <- par(no.readonly = TRUE))) on.exit(dev.off()) png("polygon4.png") plot(c(1,9), 1:2, type="n") polygon(1:9, c(2,1,2,1,NA,2,1,2,1), density=c(10, 20), angle=c(-45, 45)) }