グラフィックス参考実例集:閉多角形を描く 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を指定すると、多角形の輪郭を描きません。


xpd の値により枠からのはみ出しを制御

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")
  }
}
polygon1.png

曲線で囲まれた部分を塗りつぶす

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")
}
polygon2.png

NA 値があると多角形は分割される。col, border, lty はリサイクル使用される

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"))
}
polygon3.png

線でハッチング

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))
}
polygon4.png

添付ファイル: filepolygon2.png 2779件 [詳細] filepolygon4.png 2586件 [詳細] filepolygon3.png 2560件 [詳細] filepolygon1.png 2626件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:16