グラフィックス参考実例集:多角形
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
COLOR(red){SIZE(20){グラフィックス参考実例集:閉多角形を描く 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を指定すると、多角形の輪郭を描きません。
#contents
~
** 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")
}
}
#ref(polygon1.png,left)
**曲線で囲まれた部分を塗りつぶす
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")
}
#ref(polygon2.png,left)
**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"))
}
#ref(polygon3.png,left)
**線でハッチング
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))
}
#ref(polygon4.png,left)
終了行:
COLOR(red){SIZE(20){グラフィックス参考実例集:閉多角形を描く 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を指定すると、多角形の輪郭を描きません。
#contents
~
** 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")
}
}
#ref(polygon1.png,left)
**曲線で囲まれた部分を塗りつぶす
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")
}
#ref(polygon2.png,left)
**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"))
}
#ref(polygon3.png,left)
**線でハッチング
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))
}
#ref(polygon4.png,left)
ページ名: